小编Ale*_*lex的帖子

使用反射创建lambda表达式,如x => new {..}

我有一个IQuerable<object> source对象,必须得到类似的东西(但使用反射).

source.Select(t => new SelectListItem { Name = t.Name, Value = t.Id })
Run Code Online (Sandbox Code Playgroud)

我该怎么做,或者在哪里可以找到构建那种表达式树的引用.

谢谢

c# reflection lambda expression

7
推荐指数
1
解决办法
5109
查看次数

用于管理员的Rails基本控制器

我从.net迁移到rails并且我是初学者.我玩过但不知道如何为admin命名空间创建一个基本控制器来共享一些功能.我的意思是,在哪里放基类,因为我每次尝试都会出错.

谢谢

controller ruby-on-rails admin base

5
推荐指数
1
解决办法
2664
查看次数

Reflection .NET Core创建Lambda表达式

我正在尝试创建一个lambda表达式(使用Reflection),看起来像这样

IServiceProvider provider => provider.GetService<TDbContext>()
Run Code Online (Sandbox Code Playgroud)

或者,更具体地说,作为GetService一种扩展方法:

provider => ServiceProviderServiceExtensions.GetService<TDbContext>(provider)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

 var methodInfo = typeof(ServiceProviderServiceExtensions).
                GetTypeInfo().
                GetMethod("GetService").
                MakeGenericMethod(typeof(TDbContext));

        var lambdaExpression = Expression.Lambda(
            Expression.Call(methodInfo, Expression.Parameter(typeof(IServiceProvider), "provider")),
            Expression.Parameter(typeof(IServiceProvider), "provider")
            );

var compiledLambdaExpression = lambdaExpression.Compile();
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误

System.Linq.Expressions.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

附加信息:从范围''引用的'System.IServiceProvider'类型的变量'provider',但它没有定义

.net c# linq reflection .net-core

4
推荐指数
1
解决办法
726
查看次数

标签 统计

c# ×2

reflection ×2

.net ×1

.net-core ×1

admin ×1

base ×1

controller ×1

expression ×1

lambda ×1

linq ×1

ruby-on-rails ×1