c# - 在 c# .Net 中创建基于索引的类

标签 c# .net oop

我有一些类,想使用索引或类似的东西访问它们的属性

ClassObject[0] 或更好的是 ClassObject["PropName"]

而不是这个

ClassObj.PropName.

谢谢

最佳答案

你需要索引器:

http://msdn.microsoft.com/en-us/library/aa288465(v=vs.71).aspx

public class MyClass
{
    private Dictionary<string, object> _innerDictionary = new Dictionary<string, object>();

    public object this[string key]
    {
        get { return _innerDictionary[key]; }
        set { _innerDictionary[key] = value; }
    }
}

// Usage
MyClass c = new MyClass();
c["Something"] = new object();

这是记事本编码,所以对它持保留态度,但索引器语法是正确的。

如果您想使用它来动态访问属性,那么您的索引器可以使用反射将键名作为属性名。

或者,查看 dynamic 对象,特别是 ExpandoObject,它可以转换为 IDictionary 以便根据文字访问成员字符串名称。

关于c# - 在 c# .Net 中创建基于索引的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090278/

相关文章:

c# - "a"不包含 "b"的定义并且没有扩展方法 ' b ' 接受类型的第一个参数

php - 减少 Mysql 查询和 OOP

PHP (OOP) - 从调用的函数中获取对象

c# - 如何读取 .Net 程序中生成的堆栈跟踪或错误信息以查找异常的根本原因

c# - 如何代码重用apsx?

javascript - 尝试使用 JavaScript 更改 ASP.NET 标签值时出现错误

c# - 如何压缩两个不同大小的列表以创建一个与原始列表中最长的列表相同的新列表?

c# - 由于保护级别而无法访问类属性

c# - 处理 2 月 28 日的 DateTimeOffset

c# - 对 asp.net mvc 应用程序的长轮询需要 POST 而不是 GET ajax 方法。为什么?