如何获得房产的吸气剂?

gre*_*man 4 c# properties

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

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

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

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

lep*_*pie 6

var getter = typeof(DateTime).GetProperty("Now").GetGetMethod();
var func = Delegate.CreateDelegate(getter, typeof(Func<DateTime>)) 
               as Func<DateTime>;
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 6

编译代码,还是反射?作为代表,您可以使用:

Func<Foo, int> func = x => x.SomeValue;
Run Code Online (Sandbox Code Playgroud)

或跟踪特定对象:

Func<int> funct = () => someObj.SomeValue;
Run Code Online (Sandbox Code Playgroud)

通过反射你需要GetGetMethod()Delegate.CreateDelegate()