gpt4 book ai didi

c# - 定义委托(delegate)蓝图

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:26 53 4
gpt4 key购买 nike

我正在阅读 this有人回答的问题建议使用这种方法:

public static void Method<T>(Func<int,T> del) {
var t = del(42);
}

应该这样使用:Method<SomeType>(x => new SomeType(x));
Method body 对这个问题并不重要。如果委托(delegate)/lambda 不属于那种“风格”,则该方法将无法按预期工作。例如,如果它被称为 Method(x => new Foo());它不会“工作”,因为解决方法的目的将丢失。
目的是确保 T有一个构造函数接受 1 个类型为 int 的参数.我希望我能做到T(int)那么无论如何要确保委托(delegate)应该始终是 x => new SomeType(x) ?还是有其他选择?我查了很多地方,什么也想不出来。

最佳答案

您不需要函数来执行此操作。只需传入您想要的类型,它就会返回对象并确保将 int 传递给它。然后,您基本上只是创建一个工厂方法,它将通过传入的整数为您提供所需的类型。

public T Method<T>(int whatever) where T : class
{
return (T)Activator.CreateInstance(typeof(T), whatever);
}

var type = Method<SomeType>(55);

关于c# - 定义委托(delegate)蓝图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697071/

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