gpt4 book ai didi

c# - 是否可以创建一个通用的 Func

转载 作者:太空狗 更新时间:2023-10-30 01:03:40 24 4
gpt4 key购买 nike

是否可以创建一个通用的 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;

关于c# - 是否可以创建一个通用的 Func<T><T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27030161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com