定义委托蓝图
本文关键字:定义 | 更新日期: 2023-09-27 18:21:53
我正在阅读这个问题,其中一个答案建议使用这种方法:
public static void Method<T>(Func<int,T> del) {
var t = del(42);
}
哪个应该这样使用:Method<SomeType>(x => new SomeType(x));
Method
主体对这个问题并不重要。如果委托/lambda不在该"样式"中,则该方法将无法按预期工作。例如,如果像Method(x => new Foo());
那样调用它,它将不会"工作",因为变通方法的目的将丢失
目的是确保T
有一个采用1个类型为int
的参数的构造函数。我希望我能做T(int)
那么,是否有任何方法可以确保委托始终是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);