C# 反射和 Func<object,bool> 成员
C# reflection and Func<object,bool> member
我有3个class,每个都有相同的功能字段:
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;
}
我有一家工厂可以为我提供合适的 class。还有另一种方法可以确定调用 class 的哪个函数。
dbcontext.sampleobjects.where(Factory(class).ReflectionFunction(memberName));
我能够通过以下方式使用反射获取成员名称:
var prop = this.GetType().GetMember("alpha");
我只是不知道如何使用它或调用什么才能在 "WHERE" 语句中使用,就像我直接调用它一样。
dbcontext.sampleobjects.Where(instanceofA.alpha);
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);
我有3个class,每个都有相同的功能字段:
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;
}
我有一家工厂可以为我提供合适的 class。还有另一种方法可以确定调用 class 的哪个函数。
dbcontext.sampleobjects.where(Factory(class).ReflectionFunction(memberName));
我能够通过以下方式使用反射获取成员名称:
var prop = this.GetType().GetMember("alpha");
我只是不知道如何使用它或调用什么才能在 "WHERE" 语句中使用,就像我直接调用它一样。
dbcontext.sampleobjects.Where(instanceofA.alpha);
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);