考虑以下代码,我想做这样的事情,这不起作用,但这就是我想要的
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) { }
}
我不想这样做,因为我不希望使用我的代码的人指定字符串作为类型,因为&#34;某些东西&#34;已经是一个字符串
TestClass<string>.Test("something");
以另一种方式解释我的问题,我想从同一类中的20种方法中提取相同的泛型类型和约束,我不希望它们反复重复,并且我不希望用户在使用我的方法时指定类型,他们传入的参数将提供类型。
谢谢!
答案 0 :(得分:1)
如果您在类本身上指定泛型,则需要指定它,如您在问题中所述 - 这可行:
public static class TestClass
{
public static void Test<T>(T something) { }
}
TestClass.Test("something");// T is infered.
如果您希望编译器推断它,则需要将其放在方法上:
{{1}}
答案 1 :(得分:1)
如果我理解你,你需要这个:
public static void Test<T>(T myValue) {. ..}
然后这样称呼:
TestClass.Test("DoSomething");
会自动为您推断类型string
,您无需在type-parameter中指定它。