我有一些课,想使用索引或类似的东西来访问它们的属性
ClassObject[0]或更好的将是ClassObject["PropName"]
代替这个
ClassObj.PropName.
谢谢

最佳答案

您可以执行以下操作,一个伪代码:

    public class MyClass
    {

        public object this[string PropertyName]
        {
            get
            {
                Type myType = typeof(MyClass);
                System.Reflection.PropertyInfo pi = myType.GetProperty(PropertyName);
                return pi.GetValue(this, null); //not indexed property!
            }
            set
            {
                Type myType = typeof(MyClass);
                System.Reflection.PropertyInfo pi = myType.GetProperty(PropertyName);
                pi.SetValue(this, value, null); //not indexed property!
            }
        }
    }

并在使用后像
MyClass cl = new MyClass();
cl["MyClassProperty"] = "cool";

请注意,这不是完整的解决方案,因为如果您要具有非公共(public)属性/字段,静态属性等,则需要在反射访问期间“玩” BindingFlags。

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

10-17 00:24