Tipos derivados de WCF y violación del principio abierto/cerrado
-
25-10-2019 - |
Pregunta
Tengo una clase base que uso en llamadas de servicio WCF,
[KnownType(typeof(MyDerivedClass))]
public abstract class MyBaseClass {
//some properties
}
Dervo de él y cada vez que derivo tengo que agregar el [KnownType(typeof(MyDerivedClass))]
atributo y cada vez que lo hago viola el Abrir cerrado principio. ¿Hay de todos modos para obtener clases como esta para su uso en WCF y no tener que agregar atributos a la clase principal cada vez?
Solución
Puede usar un método estático que devuelva los tipos conocidos:
[DataContract]
[KnownType("GetKnownType")]
public class MyBaseClass
{
//some properties
private static Type[] GetKnownType()
{
return KnownTypesHelper.GetKnownTypes<MyBaseClass>();
}
}
Ahora cree una clase estática conocida typeshelper que devuelva una matriz de tipos conocidos (escaneando ensamblajes para encontrar implementaciones de la clase base, por ejemplo ...)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow