Как ограничить коллекцию для хранения только определенных типов объектов? - PullRequest
0 голосов
/ 13 июля 2011

У меня есть свойство в классе, которое используется как тип ответа контракта операции в службе WCf, которая связывается с устаревшими клиентами ASMX.

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

Но если потребитель добавляет другой тип, отличный от ожидаемого, служба аварийно завершает работу, поскольку XmlSerializer не может сериализовать это свойство.

Есть ли способ получить коллекцию определенных типов? Дженерики были бы ответом на это, но вместо того, чтобы реализовать новый класс коллекции в целом, могу ли я «унаследовать» мой новый класс от некоторого существующего класса коллекции, чтобы мне были доступны все функции?

Ответы [ 2 ]

0 голосов
/ 13 июля 2011

Посмотрите на пространство имен System.Collections.Generic .

Согласно вашему комментарию "Я хочу" одну "коллекцию, которая способна хранить объекты некоторых указанных типов. ":
Создайте некоторый средний класс A:

class A<T1, T2> {}

и затем используйте:

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

или используйте класс Tuple<T1, T2> (.NET 4.0).

0 голосов
/ 13 июля 2011

Вы можете использовать System.Collections.Generic.List для коллекции определенного типа.Вы также можете наследовать от List, чтобы добавить свои собственные функции, если хотите.

...