在C#中,您可以对通用方法施加约束,例如:
public class A { public static void Method<T> (T a) where T : new() { //...do something... } }
您在其中指定的位置T应具有不需要参数的构造函数。我想知道是否有一种方法可以添加一个约束,例如“ 存在带有float[,]参数的构造函数? ”
T
float[,]
以下代码无法编译:
public class A { public static void Method<T> (T a) where T : new(float[,] u) { //...do something... } }
解决方法也有用吗?
如您所知,您无法执行此操作。
作为一种解决方法,我通常提供一个可以创建以下类型的对象的委托T:
public class A { public static void Method<T> (T a, Func<float[,], T> creator) { //...do something... } }