WCF types dérivés et violation de l'Open / principe fermé
-
25-10-2019 - |
Question
J'ai une classe de base que j'utilise dans les appels de service WCF,
[KnownType(typeof(MyDerivedClass))]
public abstract class MyBaseClass {
//some properties
}
Je en tirer et chaque fois que je tire je dois ajouter l'attribut [KnownType(typeof(MyDerivedClass))]
et chaque fois que je fais je ne respecte pas le Ouvert / Fermé le principe de. Y at-il de toute façon à des classes Derive comme celui-ci pour une utilisation dans WCF et ne pas avoir à ajouter des attributs à la classe parent chaque fois?
La solution
Vous pouvez utiliser une méthode statique qui retourne les types connus:
[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
//some properties
private static Type[] GetKnownType()
{
return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
}
}
Maintenant, créez une KnownTypesHelper de classe statique qui retourne un tableau de types connus (par le balayage des ensembles pour trouver des implémentations de classe de base, par exemple ...)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow