通用类:基于类型的条件方法



我有一个现有的C#通用类,并希望根据使用类型添加或删除一种方法,我解释

public class MyType<T>
{
    public T getValue() { return value; }
}

对于特定的MyType<void>,我希望"删除" getValue"方法。这样的东西存在吗?

nope,但您可能可以完成与接口相似的事情

interface IMyType
{
   //...what ever method/properties are shared for all
}
public class MyType<T> : IMyType
{
   public T getValue() { return value; }
   //...shared methods
}
public class MyTypeOtherSide : IMyType
{
   //...shared methods
}

然后您需要将变量声明为iMytype,并且仅在知道它是该类型

时才使用MyType<T>

使用仿制药的目的是具有适用于所有类型的通用类型 - 销售,而不仅仅是少数类型。

我想您只需要一个针对数字的操作。您可以在类上添加通用约束,如下所示:

public class MyType<T> where T: struct
{
    public T getValue() { return value; }
}

但是,这还将允许具有通用参数void的类型具有GetValue -METHOD,因为void也是struct。但是,这不会像Lee所提到的那样构建MyType<void>的构造,这不会受到伤害。

此外,所有数字类型都没有常见的接口,并且可以用作通用约束。唯一的解决方法是为每种类型都有一种方法,因此getDouble,getInt等等