我有一个现有的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等等