gpt4 book ai didi

c# - 通过变量引用属性名称

转载 作者:行者123 更新时间:2023-11-30 18:48:33 25 4
gpt4 key购买 nike

有没有办法用变量引用属性名?

场景:对象 A 具有公共(public)整数属性 X 和 Z,所以...

public void setProperty(int index, int value)
{
string property = "";

if (index == 1)
{
// set the property X with 'value'
property = "X";
}
else
{
// set the property Z with 'value'
property = "Z";
}

A.{property} = value;
}

这是一个愚蠢的例子,所以请相信,我可以用它。

最佳答案

简单:

a.GetType().GetProperty("X").SetValue(a, value);

请注意,如果 a 的类型没有名为“X”的属性,则 GetProperty("X") 返回 null

要在您提供的语法中设置属性,只需编写一个扩展方法:

public static class Extensions
{
public static void SetProperty(this object obj, string propertyName, object value)
{
var propertyInfo = obj.GetType().GetProperty(propertyName);
if (propertyInfo == null) return;
propertyInfo.SetValue(obj, value);
}
}

然后像这样使用它:

a.SetProperty(propertyName, value);

UPD

请注意,这种基于反射的方法相对较慢。为了获得更好的性能,请使用动态代码生成或表达式树。有很好的图书馆可以为您做这些复杂的事情。例如,FastMember .

关于c# - 通过变量引用属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13292078/

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