如何限制集合只存储特定类型的对象?

时间:2011-07-13 09:48:32

标签: .net c#-4.0 xmlserializer

我在类中有一个属性,用作WCf服务中操作合同的回复类型,与旧版ASMX客户端通信。

 [XmlArrayItem(Type = typeof(Person), Namespace = "TestNamespace")]
        [XmlArrayItem(Type = typeof(Department),
            Namespace = "TestNamespace")]
        public Collection<object> OrgCollection { get; set; }

但是,如果使用者添加了一些其他类型而不是预期的类型,服务崩溃是因为XmlSerializer无法序列化此属性。

有没有办法收集某些特定类型?泛型将是它的答案,但不是完全实现一个新的集合类,我可以从一些现有的集合类“继承”我的新类,以便我可以使用所有的功能吗?

2 个答案:

答案 0 :(得分:0)

您可以将System.Collections.Generic.List用于特定类型的集合。如果您愿意,也可以从List继承以添加自己的功能。

答案 1 :(得分:0)

查看System.Collections.Generic命名空间。

根据您的评论“我想要一个”单一“集合,它能够存储某些指定类型的对象。”
创建一些中产阶级A

class A<T1, T2> {}

然后使用:

List<A<T1, T2>> OrgCollection { get;set }

或使用Tuple<T1, T2>类(.NET 4.0)。