Frage

Ich habe eine Basisklasse, die ich in WCF -Serviceanrufen verwende.

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

Ich stelle daraus ab und jedes Mal, wenn ich ableite, muss ich das hinzufügen [KnownType(typeof(MyDerivedClass))] Attribut und jedes Mal, wenn ich die Offen geschlossen Prinzip. Gibt es ohnehin, um Klassen wie diese zur Verwendung in WCF abzuleiten und nicht jedes Mal Attribute zur übergeordneten Klasse hinzuzufügen?

War es hilfreich?

Lösung

Sie können eine statische Methode verwenden, die bekannte Typen zurückgibt:

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

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

Erstellen Sie nun eine statische Klasse Bekannung vontypeShelper, die eine Reihe bekannter Typen zurückgibt (indem Sie zusammenstellen, um Implementierungen der Basisklasse beispielsweise zu finden ...)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top