我还没有在现有问题中找到我的用例,所以我开始了。
我有一个抽象类,它有这样的泛型:

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/

10-14 21:17