定义委托蓝图

本文关键字:定义 | 更新日期: 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);