当您只有一个具有确切名称的字符串作为对象字段时,如何“选择”对象字段

时间:2015-10-28 14:01:25

标签: c# .net

如果标题不清楚,很抱歉,很难正确地说出这个问题。

我有一个名为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#做​​吗?我找不到任何关于它的信息,也很难找到这样的问题。

2 个答案:

答案 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来做你正在寻找的声音。