WCF Derivato tipi e violazione del / principio di Chiuso Aperto
-
25-10-2019 - |
Domanda
Ho una classe di base che uso in chiamate di servizio WCF,
[KnownType(typeof(MyDerivedClass))]
public abstract class MyBaseClass {
//some properties
}
I ricavare da esso e ogni volta che mi traggo devo aggiungere l'attributo [KnownType(typeof(MyDerivedClass))]
ed ogni volta che lo faccio mi violare la principio aperto / chiuso . Esiste un modo per classi Nuovo campo come questo per l'uso in WCF e non c'è bisogno di aggiungere attributi alla classe padre ogni volta?
Soluzione
È possibile utilizzare un metodo statico che restituirà tipi conosciuti:
[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
//some properties
private static Type[] GetKnownType()
{
return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
}
}
Ora creare una KnownTypesHelper classe statica che restituisce un array di tipi noti (tramite scansione assiemi di trovare implementazioni di classe base per esempio ...)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow