【发布时间】:2011-04-30 05:19:12
【问题描述】:
我需要一些帮助来解决我遇到的设计问题。我试图实现的是:
我有一个名为 Document 的主类。这个类有一个属性类列表。这些 Attribute 类有一些共同的属性,例如 Identity 和 Name,但它们的不同之处在于我称之为 Value 的一个属性。每个不同的 Attribute 类的 Value 类型都不同,可以是 string、integer、List、DateTime、float、List 以及由多个属性组成的类。一个例子是我称之为 PairAttribute 的类,它有 2 个属性:Title 和 Description。
我试图实现的是 Attribute 子类的 Value 属性的类型安全,并且这些子类应该能够添加到 Document 类的 Attribute 列表中。我本可以只创建一个具有 object 类型的 Value 属性的 Attribute 类并完成它,但这正是我在这里试图避免的。
我猜公共属性(身份和名称)应该放在一个基类中,我们称之为 AttributeBase 类。但是我想要一个子类,比如 StringAttribute,其中 Value 属性是字符串类型,一个 IntegerAttribute 类,其中 Value 属性是 Integer 类型,一个 StringListAttribute,其中 Value 属性是 List 类型,一个 PairAttribute 类,其中 Value是一个具有多个属性等的类
你知道我该如何实现吗?这是我应该采用的解决方案,还是解决此类安全问题的更好方法?我会感谢代码示例进行澄清:)
【问题讨论】:
标签: c# generics polymorphism