如果标题不清楚,很抱歉,很难正确地说出这个问题。
我有一个名为Stuff和MoreStuff的对象。
public class Stuff()
{
public string Field1;
public string Field2;
}
public class MoreStuff()
{
public string Field3;
public string Field4;
}
当字符串fieldValue ='Field1'
时,我想创建一些为Field1添加值的东西为了更清楚,这样的事情。但我想让它对任何对象都是通用的。:
string fieldValue = 'Field1'
Stuff thing = new Stuff();
checkField(fieldValue);
thing.fieldValue = 'checked';
string fieldValue = 'Field4'
MoreStuff moreThing = new MoreStuff();
checkField(fieldValue);
moreThing.fieldValue = 'checked';
这可以用C#做吗?我找不到任何关于它的信息,也很难找到这样的问题。
答案 0 :(得分:1)
您可以使用反射:
string fieldName = "Field1";
Stuff thing = new Stuff();
thing.GetType().GetField(fieldName).SetValue(thing, "checked");
答案 1 :(得分:1)
Square test = new Square();
test.Field1 = "sdflsjf";
test.Field2 = "sdlfksj";
test.Field3 = "sldfjs";
foreach (PropertyInfo propertyInfo in test.GetType().GetProperties())
{
if (propertyInfo.Name == "Field2")
propertyInfo.SetValue(test, "checked");
}
这使用System.Reflection来做你正在寻找的声音。