我有一些课,想使用索引或类似的东西来访问它们的属性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/