繁体   English   中英

在静态泛型类中调用方法而不指定类型

[英]calling method in static generic class without specifying type

考虑下面的代码,我想做这样的事情,这行不通,但这就是我想要的

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 个方法中提取相同的泛型类型和约束,我不希望它们一遍又一遍地重复,并且我不希望用户指定type 当他们使用我的方法时,他们传入的参数将提供类型。

谢谢!

如果您在类本身上指定泛型,则需要指定它,正如您在问题中所指出的 - 这将起作用:

TestClass<string>.Test("something")

如果你想让编译器推断它,你需要把它放在方法上:

public static class TestClass
{
    public static void Test<T>(T something) { }
}

TestClass.Test("something");// T is infered.

现场示例: http : //rextester.com/VOF10456

如果我理解正确,你需要这个:

public static void Test<T>(T myValue) {. ..}

然后像这样调用它:

TestClass.Test("DoSomething");

这将自动为您推断类型string ,您无需在类型参数中指定它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM