C#反射和Func<;对象,bool>;成员

本文关键字:bool 成员 gt 对象 lt 反射 Func | 更新日期: 2023-09-27 18:06:26

我有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);

C#反射和Func<;对象,bool>;成员

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);