定义委托蓝图

时间:2015-11-13 16:11:16

标签: c# delegates

我正在阅读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)?或者有其他选择吗?我找了很多地方,不能想出任何东西。

1 个答案:

答案 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);