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

本文关键字:对象 字段 字符串 有一个 选择 如何 | 更新日期: 2023-09-27 18:19:34

很抱歉,如果标题不清楚,很难正确拼写这个问题。

我有一个名为Stuff和MoreStuff的对象。

public class Stuff()
{
    public string Field1;
    public string Field2;
}
public class MoreStuff()
{
    public string Field3;
    public string Field4;
}

当字符串fieldValue='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#中可以做到吗?我找不到任何关于它的信息,也很难找到这样的问题。

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

您可以使用反射:

string fieldName = "Field1";
Stuff thing = new Stuff();
thing.GetType().GetField(fieldName).SetValue(thing, "checked");
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通过它的声音大致完成你想要的事情。