如何编写一个可以在不命名的情况下访问属性的类

Jür*_*ock 3 .net c# vb.net class-design

我有关于VB/C#的(转储)问题

我经常使用第三方类,我只能指定id或key来访问子对象.

例:

而不是写:

DataRow row = GetAPopulatedDataRowSomeWhere();
Object result = row.Items[1]; // DataRow has no Items property
Object result = row.Items["colName"]; // Also not possible
Run Code Online (Sandbox Code Playgroud)

我使用此代码访问成员:

DataRow row = GetAPopulatedDataRowSomeWhere();
Object result = row[1];
Object result = row["colName"];
Run Code Online (Sandbox Code Playgroud)

有人能告诉我一个类如何支持这种语法?我自己的类有一个我想以这种方式访问​​的词典.

MyClass["key"]; // <- that's what I want
MyClass.SubItems["key"]; // <- that's how I use it now
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 11

您需要拥有索引属性.

public class MyClass
{
    public object this[string key]
    {
        get { return SubItems[key]; }
        set { SubItems[key] = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)