如果我有一个拥有FirstName的属性的类Perso,我能通过如下方式访问:
Person.FirstName = "Mike";
能通过下面的方式来访问吗
Person["FirstName"]="Mike";
通过反射类来实现,但是这种方法性能比较低。
publci
class
YourClass
... {
//...
public object this[string name]
...{
get
...{
PropertyInfo info = this.PropertyInfoByName(name);
return info.GetValue(this,null);
}
set
...{
PropertyInfo info = this.PropertyInfoByName(name);
info.SetValue(this,value,null);
}
}
private PropertyInfo PropertyInfoByName(string name)
...{
Type type = this.GetType();
PropertyInfo info = type.GetProperty(name);
if (info == null)
...{
throw new Exception(String.Format("对象{0}的属性{1}不能被访问 .", type.FullName, name));
}
return info;
}
//...
}
... {
//...
public object this[string name]
...{
get
...{
PropertyInfo info = this.PropertyInfoByName(name);
return info.GetValue(this,null);
}
set
...{
PropertyInfo info = this.PropertyInfoByName(name);
info.SetValue(this,value,null);
}
}
private PropertyInfo PropertyInfoByName(string name)
...{
Type type = this.GetType();
PropertyInfo info = type.GetProperty(name);
if (info == null)
...{
throw new Exception(String.Format("对象{0}的属性{1}不能被访问 .", type.FullName, name));
}
return info;
}
//...
}