WCF abgeleitete Typen und Verletzung des offenen/geschlossenen Prinzips
-
25-10-2019 - |
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?
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