我想做的是使用字符串设置类中的属性值。例如,我的类具有以下属性:
myClass.Name
myClass.Address
myClass.PhoneNumber
myClass.FaxNumber
所有字段都是 string
类型,所以我提前知道它总是一个字符串。现在,我希望能够像使用 DataSet
对象一样使用字符串设置属性。像这样:
myClass["Name"] = "John"
myClass["Address"] = "1112 River St., Boulder, CO"
理想情况下,我只想分配一个变量,然后使用该变量中的字符串名称设置属性:
string propName = "Name"
myClass[propName] = "John"
我正在阅读有关反射的内容,也许它就是这样做的方法,但我不确定如何在保持类中属性访问完整的同时进行设置。我希望仍然能够使用:
myClass.Name = "John"
任何代码示例都非常棒。
您可以添加索引器属性,一个伪代码:
public class MyClass
{
public object this[string propertyName]
{
get
{
// probably faster without reflection:
// like: return Properties.Settings.Default.PropertyValues[propertyName]
// instead of the following
Type myType = typeof(MyClass);
PropertyInfo myPropInfo = myType.GetProperty(propertyName);
return myPropInfo.GetValue(this, null);
}
set
{
Type myType = typeof(MyClass);
PropertyInfo myPropInfo = myType.GetProperty(propertyName);
myPropInfo.SetValue(this, value, null);
}
}
}