动态Linq on方法通过反射调用泛型类型

时间:2015-08-31 09:17:34

标签: c# linq reflection

我有一个Query Extender,它有一个CustomExpression,我想用它来对我的数据源进行一些过滤。

这是在DynamicData网站中,所以我不知道编译时的对象类型(当前实体)。假设我在编译时知道对象类型,那么我可以这样做:

protected void GameFiltering(object sender, CustomExpressionEventArgs e)
{
        e.Query = e.Query.Cast<Resource>().Where(x => x.GameId == GameId);
}

我可以从e.Query.ElementType获得我需要的类型。现在我只是将ElementType作为泛型参数发送到Cast方法,然后调用linq方法Where。

我会假设每个Type都有一个GameId属性,我想要过滤它。

MethodInfo method = e.Query.GetType().GetMethod("Cast").MakeGenericMethod(new Type[] { e.Query.ElementType });
var castedQuery = method.Invoke(e.Query, null);

这是我用反射调用cast方法的方法,但我不知道如何在结果对象上调用linq方法。

1 个答案:

答案 0 :(得分:1)

如果您认为所有物品都具有该属性,则无需投射它们。

app.post('/xyz',function(request,response)
{
    var IPFromRequest=request.connection.remoteAddress;
    var indexOfColon = IPFromRequest.lastIndexOf(':');
    var IP = IPFromRequest.substring(indexOfColon+1,IPFromRequest.length);
    console.log(IP);
});