如何获得房产的吸气剂?

时间:2010-07-23 06:27:59

标签: c# properties

我想得到一个属性的getter,所以我可以传递给需要Func的方法。现在我将getter提取到Get方法,并在需要getter函数时使用此方法。

关于背景的几句话:我有一个带有属性的类A,我有另一个类T,它跟踪A(以及B,C等)的一些属性。保持跟踪意味着当T的对象被询问有关被跟踪属性的当前值时,它应该给出这样的信息。

一种方法可能是更改通知机制,但A类不知道跟踪的是什么 - 所以这是非常错误的方法。您必须重写所有可能被跟踪的类。此外,通知必须始终发送,即使跟踪器根本不会被问及值。

简单地传递方法如何读取值(属性的getter)似乎更方便,跟踪器将在需要时使用它。没有开销,非常简单。

3 个答案:

答案 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:...