考虑下面的代码,我想做这样的事情,这行不通,但这就是我想要的
class Program
{
static void Main(string[] args)
{
TestClass.Test("something");
}
}
public static class TestClass<T>
{
public static void Test(T something) { }
}
下面的代码可以工作,但我在同一个类中有大约 20 个泛型方法,它们一遍又一遍地重复它们的约束。
public static class TestClass
{
public static void Test<T>(T something) { }
}
我不想这样做是因为我不希望使用我的代码的人将字符串指定为类型,因为“某物”已经是一个字符串
TestClass<string>.Test("something");
换个角度解释我的问题,我想从同一个类中的大约 20 个方法中提取相同的泛型类型和约束,我不希望它们一遍又一遍地重复,我不想'希望用户在使用我的方法时指定类型,他们传入的参数将提供类型。
谢谢!
最佳答案
如果您在类本身上指定泛型,则需要指定它,正如您在问题中指出的那样 - 这会起作用:
TestClass<string>.Test("something")
如果你想让编译器推断它,你需要把它放在方法上:
public static class TestClass
{
public static void Test<T>(T something) { }
}
TestClass.Test("something");// T is infered.
关于c# - 在不指定类型的情况下调用静态泛型类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36791261/