我正在阅读this的问题,有人回答了这个问题,提出了这样的方法:
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有一个带有int类型的1个参数的构造函数。我希望我能做T(int),所以是否存在确保委托始终为x => new SomeType(x)的情况?还是有别的选择?我查了很多地方,什么都想不出来。
发布于 2015-11-13 16:45:58
你不需要一个小丑来做这件事。只要传入您想要的类型,它就会返回对象,并确保int被传递给它。然后,您基本上只是创建一个工厂方法,它将为您提供所需的类型以及传入的整数。
public T Method<T>(int whatever) where T : class
{
return (T)Activator.CreateInstance(typeof(T), whatever);
}
var type = Method<SomeType>(55);https://stackoverflow.com/questions/33697071
复制相似问题