通用类:可选类型

时间:2015-04-20 14:07:25

标签: c# class generics optional

在C#中是否有一种方法可以使用带有可选Type的泛型类。

例如

类别:

public abstract class A<Type> : Interface where Type : new()
{
    public string Method1(int param)
    { ... }
}

致电:

A<SomeType>.Method1(9);
A.Method1(9);

1 个答案:

答案 0 :(得分:2)

我认为你应该直接思考你的设计。

您要么具有泛型类,具有完全限定的类型名称,要么您具有非泛型类。它是其中之一。你没有半班。

所以你可以这样写:

public class A : Interface
{
    public string Method1(int param)
    { ... }
}

A a = new A();
string output = a.Method1(10);

或者如果你使Method1静态:

string output = A.Method1(10);

然后您可以选择为通用变体派生出一个:

public class B<T> : A where T : new()
{
}

B<int> b = new B<int>();
string output = b.Method1(10);