gpt4 book ai didi

c# - 根据属性名称动态分配属性值的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-03 20:10:27 25 4
gpt4 key购买 nike

我有一个正在迭代的列表。

List<> 内是 Argument 类,其中包含两个属性“PropertyName”和“Value”

我需要做的是遍历参数集合并将该参数的值分配给不同类的属性(与当前参数同名)。

例子:

Argument:
PropertyName: ClientID
Value: 1234
Members Class:
ClientID = {Argument Value here}

我希望这是有道理的。我有办法做到这一点,对我的类的属性进行硬编码并将其与参数列表匹配。

类似于:

foreach(var arg in List<Argument>)
{
Members.ClientID = arg.Find(x => compareName(x, "ClientID")).Value;
//where compareName just does a simple string.Compare
}

但是对于这样的事情,最好的方法是什么?

编辑:对这些人感到抱歉,感谢到目前为止的回复。这是我没有提到但可能会有所作为的内容。

每个参数都是同一类的不同属性。我正在遍历列表,其中的每个列表都将用于我必须填充的同一个成员类。

我想提及这一点,因为我在考虑 foreach 时可能必须使用开关来确定我为该参数设置的“PropertyName”。 ClientID 是其中之一,但我相信 Members 类中总共有 14 个属性需要从 Collection 中填充。

这会改变一切吗?

再次感谢

最佳答案

public object this[string propertyName]
{
get
{
Type myType = typeof(UserConfiguration);
PropertyInfo myPropInfo = myType.GetProperty(propertyName);
return myPropInfo.GetValue(this, null);
}
set
{
Type myType = typeof(UserConfiguration);
PropertyInfo myPropInfo = myType.GetProperty(propertyName);
myPropInfo.SetValue(this, value, null);
}
}

然后您可以使用

在类中获取/设置属性
myClassInstance["ClientId"] = myValue;

关于c# - 根据属性名称动态分配属性值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20434579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com