假设我有一个模型:
public class MyModel
{
public int MyProperty { get; set; }
}
比我有一个指向 MyProperty 的 Func:
Func<MyModel, int> func = x => x.MyProperty;
所以,使用这个函数我想更改初始化对象的属性:
var myModel = new MyModel();
?????
最佳答案
您需要将“MyProperty”的新值作为参数传递给您的 Func
Func<MyModel,int, int> func = (x, newValue) =>
{
x.MyProperty = newValue;
return newValue;
};
并像这样使用它:
var m = new MyModel();
func(m, 2);
或者,如果您对返回值不感兴趣,您可以将 Func 转换为 Action:
Action<MyModel,int> func = (x, newValue) => x.MyProperty = newValue;
此外,您可以在闭包中捕获“MyModel”变量,这样您就不必在每次想要更改“MyProperty”的值时显式传递实例:
var myModel = new MyModel();
Func<MyModel, Action<int>> getSetter = x =>
newValue=>x.MyProperty = newValue;
var setter = getSetter(myModel);
setter(3);
setter(4);
关于c# - 使用指向属性的 func 设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51243216/