Ken*_*eth 4 c# generics lambda
是否可以创建泛型Func<T><T>,如在Func中接受泛型参数并需要返回该泛型参数的类型?
换句话说,我可以这样做吗?
Func<T> createNull = () => default(T);
请注意,我没有包含类或方法的任何上下文,所以我想这样做:
var user = createNull<User>();
这里有一些关于我正在尝试做什么的信息.(注意语法是关闭的,因为我不知道该怎么做,也不知道它是否可能):
Func<TQuery, TResult><TQuery, TResult> query = q => 
    (TResult) handlers[Tuple.Create(typeof(TQuery), typeof(TResult))](q);
处理程序声明如下:
var handlers = new Dictionary<Tuple<Type, Type>, Func<TQuery, TResult><TQuery, TResult>();
// examples
handlers.Add(Tuple.Create(typeof(ById), typeof(User)), 
             idQuery => new User());
handlers.Add(Tuple.Create(typeof(ByName), typeof(Customer)), 
             otherQuery => new Customer());
然后我想这样用query:
User result = query<User, IdQuery>(new ById{Id = 1});
Customer result1 = query<Customer, ByName>(new ByName());
不,但是你可以将它放在静态类中,它几乎可以提供你想要的东西:
static class CreateNull<T>
{
   public static Func<T> Default = () => default(T);
}
var createNull = CreateNull<User>.Default;
| 归档时间: | 
 | 
| 查看次数: | 119 次 | 
| 最近记录: |