我有一个这样的方法:
public List<MyObjects> All<TEntity>(params LambdaExpression[] exprs)
我的目的是这样调用它:
All<SomeObject>(a => a.Collection1, a=> a.Collection2, a=>a.Collection3);
但是,我的方法签名似乎没有正确采用表达式。我究竟做错了什么?我该如何编写方法签名才能达到预期的效果?
编辑:我意识到我的示例方法调用并没有准确反射(reflect)我在现实生活中尝试做的事情:)
谢谢!!
最佳答案
在这种情况下,也许最简洁的方法是编写一个扩展方法。
public static class MyExtensions
{
public static List<TEntity> All<TEntity, TResult>(
this TEntity entity,
params Func<TEntity, TResult>[] exprs)
{
if (entity == null)
{
throw new ArgumentNullException("entity");
}
if (exprs == null)
{
throw new ArgumentNullException("exprs");
}
// TODO: Implementation required
throw new NotImplementedException();
}
}
请注意,由于类型推断,您在调用该方法时不必指定类型参数。
class C
{
public List<string> Collection1 {get; set;}
public List<string> Collection2 {get; set;}
public List<string> Collection3 {get; set;}
// ...
}
// ...
var c = new C();
c.All(x => x.Collection1, x => x.Collection2, x => x.Collection3);
关于.net - 如何传递 System.Linq.LambdaExpression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9369375/