2
我有以下的抽象类如何与给定的表达式访问属性
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
任何属性的语法?
您正在访问ChosenProperty该属性需要公开,但在自其静态实例级别的方式。 – terrybozzio
我认为你比这应该更复杂。你为什么不告诉我们你一般想要达到什么目标?相关的类名也会有帮助。 –
试试看这里http://stackoverflow.com/questions/10193453/how-can-i-pass-a-property-in-via-a-lambda-expression?rq=1 –