Allgemein akzeptierte Weg, um zu vermeiden KnownType-Attribut für jede abgeleitete Klasse

Gibt es einen allgemein anerkannten Weg, um zu vermeiden, dass du KnownType-Attribute auf WCF-Dienste? Ich habe getan, einige der Forschung, und wie es aussieht, gibt es zwei Möglichkeiten:

  1. Daten Vertrag resolver
  2. NetDataContractSerializer

Ich bin kein großer fan von mit zu statisch hinzufügen KnownType-Attribute jedes mal, wenn ich einen neuen Typ, daher wollte es vermeiden.

Gibt es eine Dritte option, die verwendet werden sollte? Wenn dem so ist, was ist es? Wenn nicht, welche der beiden oben genannten Optionen sind der richtige Weg zu gehen?

Bearbeiten - verwenden Sie eine Methode

Eine Dritte Möglichkeit wäre die Verwendung von Reflexion

[DataContract]
[KnownType("DerivedTypes")]
public abstract class FooBase
{
    private static Type[] DerivedTypes()
    {
        return typeof(FooBase).GetDerivedTypes(Assembly.GetExecutingAssembly()).ToArray();
    }
}
InformationsquelleAutor Bob Horn | 2013-04-25
Schreibe einen Kommentar