我想得到一个属性的getter,所以我可以传递给需要Func的方法。现在我将getter提取到Get方法,并在需要getter函数时使用此方法。
关于背景的几句话:我有一个带有属性的类A,我有另一个类T,它跟踪A(以及B,C等)的一些属性。保持跟踪意味着当T的对象被询问有关被跟踪属性的当前值时,它应该给出这样的信息。
一种方法可能是更改通知机制,但A类不知道跟踪的是什么 - 所以这是非常错误的方法。您必须重写所有可能被跟踪的类。此外,通知必须始终发送,即使跟踪器根本不会被问及值。
简单地传递方法如何读取值(属性的getter)似乎更方便,跟踪器将在需要时使用它。没有开销,非常简单。
答案 0 :(得分:6)
var getter = typeof(DateTime).GetProperty("Now").GetGetMethod();
var func = Delegate.CreateDelegate(getter, typeof(Func<DateTime>))
as Func<DateTime>;
答案 1 :(得分:6)
编译代码或反射?作为代表,您可以使用:
Func<Foo, int> func = x => x.SomeValue;
或跟踪特定的对象:
Func<int> funct = () => someObj.SomeValue;
通过反思,您需要GetGetMethod()
和Delegate.CreateDelegate()
答案 2 :(得分:0)
另一种变体:
background-position:...