我想做类似的事情:
SetPropertyValue(ref class1.Sport, prop2);
private static void SetPropertyValue(ref Prop1 prop1, bool prop2)
{
prop1 = new Prop1
{
BoolValue = prop2,
};
}
最佳答案
您可以使用 Lambda 表达式和一种方法来调用属性的 setValue。
创建这个方法:
public void SetPropertyValue<O, T>(O obj, Expression<Func<O, T>> property, T value)
{
var memberSelectorExpression = property.Body as MemberExpression;
if (memberSelectorExpression != null)
{
var p = memberSelectorExpression.Member as PropertyInfo;
if (p != null)
{
p.SetValue(obj, value, null);
}
}
}
然后调用它
SetPropertyValue(textBox1, (t=>t.BackColor), Color.Red );
参见:
How to set property value using Expressions?
正如 Servy 建议的那样,性能对您来说可能是个问题。您还可以使用 CodeProject 中描述的不同技术:
http://www.codeproject.com/Articles/584720/ExpressionplusbasedplusPropertyplusGettersplusandp
关于c# - 是否可以创建一个方法来设置作为参数传递给它的属性的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22719657/