Типы, полученные в WCF и нарушение принципа открытого/закрытого

StackOverflow https://stackoverflow.com/questions/8306222

Вопрос

У меня есть базовый класс, который я использую в сервисных вызовах WCF,

[KnownType(typeof(MyDerivedClass))]
public abstract class MyBaseClass {
   //some properties
}

Я выхожу из этого, и каждый раз, когда я получаю [KnownType(typeof(MyDerivedClass))] атрибут, и каждый раз, когда я это делаю, я нарушаю Открыто закрыто принцип. Есть ли в любом случае, чтобы получить такие классы для использования в WCF и не должны добавлять атрибуты в родительский класс каждый раз?

Это было полезно?

Решение

Вы можете использовать статический метод, который вернет известные типы:

[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
    //some properties

    private static Type[] GetKnownType()
    {
        return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
    }
}

Теперь создайте статический класс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top