我还没有在现有问题中找到我的用例,所以我开始了。
我有一个抽象类,它有这样的泛型:
public abstract class aParameter<T>
{
private T _parameter;
public T Parameter
{
get { return _parameter;}
}
...
}
然后我有这样的“类型”类:
public class IntParameter : aParameter<Int32>
{
public IntParameter(Int32 value)
{
_parameter = value;
}
}
public class TextParameter : aParameter<String>
{
public TextParameter(String value)
{
_parameter = value;
}
}
现在在我的应用程序代码中,我想用抽象泛型类创建一个字典,而不指定泛型类型。像这样 :
...
private Dictionary<Int32, aParameter> _paramDict = new Dictionary<Int32, aParameter>();
...
在以前的版本中,我为
aParameter
使用接口(interface)而不是抽象类,但我想将它迁移到抽象类,以便我可以简化我的“类型”类,而不是为每个“类型”重复相同的代码。这里有什么想法吗?
编辑
我忘了提到它将成为一个库的一部分,该库旨在在公司之间分发,所以我真的需要确保允许的类型。我不能只将
objects
输入到我的代码中。 最佳答案
您可能仍然需要非泛型接口(interface)(或 Brandon 所说的非泛型抽象基类),除非您放弃使用对象。
原因是 aParameter<String>
与 aParameter<int32>
的类型不同,因此如果没有帮助,您将无法将它们放入一个字典中。
我的首选方法是声明一个非泛型接口(interface)并将其用作字典的基础,然后在每个类型化泛型以及抽象基类中实现它。这样,您可以在可能的情况下从基类继承,或者如果您的一种类型需要从其他类型继承,则仅实现接口(interface) - 您将获得最大的灵活性。
关于c# - 摘要泛型和摘要列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13969405/