我有以下抽象类
abstract public class FooActivator<T> where T : class
{
protected static Expression<Func<Foo, Bar<T>>> ChosenProperty
public void Activate(T Paramater)
{
using (var foo = new Foo)
{
foo.ChosenProperty.Method(Paramater) //Obviously wrong, How do you do this?
}
}
}
想法是我可以继承这个基类,分配一个新值ChosenProperty
以告诉Activate
哪个属性调用该方法。
Public Class MyClassFooActivator : FooActivator<MyClass>
{
new static Expression<Func<Foo, Bar<MyClass>>> ChosenProperty = x => x.PropertyOfTypeBarMyClass
}
现在Activate(MyClass Paramater)
可以调用了,它会调用它
foo.PropertyOfTypeBarMyClass.Method(Paramater)
因为那是表达式中包含的属性。
显然我不能这样做foo.ChosenProperty.Method(Paramater)
,因为ChosenProperty
是类型的变量,但是选择表达式Expression
选择的任何属性的语法是什么?foo