我正在阅读this问题,其中一位回答的人提出了这种方法:
public static void Method<T>(Func<int,T> del) {
var t = del(42);
}
应该这样使用:Method<SomeType>(x => new SomeType(x));
Method
机构对这个问题并不重要。
如果委托/ lambda不在&#34; style&#34;中,则该方法将无法按预期工作。例如,如果它被调用为Method(x => new Foo());
,那么它就不会工作&#34;因为解决方法的目的将会丢失
目的是确保 T
有一个构造函数采用类型int
的1个参数。我希望我能T(int)
那么无论如何要确保代表应始终是x => new SomeType(x)
?或者有其他选择吗?我找了很多地方,不能想出任何东西。
答案 0 :(得分:0)
您不需要func来执行此操作。只需传入您想要的类型,它将返回对象并确保将int传递给它。您基本上只是创建一个工厂方法,它将为您提供传入整数所需的类型。
public T Method<T>(int whatever) where T : class
{
return (T)Activator.CreateInstance(typeof(T), whatever);
}
var type = Method<SomeType>(55);