C#reflection和Func <object,bool>成员

时间:2015-08-04 20:49:58

标签: c# .net reflection

我有3个类,每个类都有相同的功能字段:

class A {
    Func<sampleobject,bool> alpha = c=>c.some1 == something;
    Func<sampleobject,bool> beta = c=>c.some1 == something;
}
class B {
    Func<sampleobject,bool> alpha = c=>c.some1 == something;
    Func<sampleobject,bool> beta = c=>c.some1 == something;
}
class C {
    Func<sampleobject,bool> alpha = c=>c.some1 == something;
    Func<sampleobject,bool> beta = c=>c.some1 == something;
}

我有一个能让我上课的工厂。还有另一种方法可以确定调用类的哪个函数。

dbcontext.sampleobjects.where(Factory(class).ReflectionFunction(memberName));

我能够通过反射来获取会员名称:

var prop = this.GetType().GetMember("alpha");

我只是不知道如何使用这个或调用什么来在“WHERE”语句中使用,就像我直接调用它一样。

dbcontext.sampleobjects.Where(instanceofA.alpha);

1 个答案:

答案 0 :(得分:1)

var prop = this.GetType().GetMember("alpha");

有点误导 - 它是一个字段,而不是一个属性。但是,您可以通过以下方式获得实际值:

var func = (Func<sampleobject, bool>)prop.GetValue(this);

然后在Where调用中使用它:

dbcontext.sampleobjects.Where(func);

(或直接在像这样的对象上使用它:)

sampleobject obj = null; // or some other value
var result = func(obj);