Estoy usando MEF para permitir a los usuarios ampliar mi biblioteca de C#. Hasta ahora funciona bien, pero ahora estoy tratando de usarlo de una manera que nunca antes había visto.¿Cómo usar MEF para permitir que los complementos anulen la funcionalidad existente?
El caso de uso principal para MEF que he visto hasta ahora es la siguiente:
- Aplicación expone interfaz de primitivas (
IPerson
) - biblioteca externa utiliza MEF y las interfaces de primitivas para ampliar la funcionalidad de la biblioteca principal (por ejemplo,
IPoliceman : IPerson
, añade una funcionalidad) - aplicación utiliza
ImportMany
para buscarIPerson
correcta dependiendo de lo que debe hacer
Pero necesito algo como esto: supongamos que tengo una calculadora de impuestos que toma una serie de parámetros y devuelve un impuesto estimado según esos parámetros. Quiero que los usuarios puedan crear complementos con MEF que modifique cómo se hacen esos cálculos. Solo un complemento que hace esto debería poder cargarse en cualquier momento. De lo contrario, ¿cómo decido qué implementación alternativa usar?
Básicamente, mi pregunta se reduce a esto: generalmente MEF permite y agrega implementaciones de clases y métodos. ¿Cómo lo uso para permitir a los usuarios reemplazar una implementación?
Esto parece super simple. Simplemente permita que se cargue un complemento, y si no hay ninguno disponible, use la implementación predeterminada. Luego puede hacer que el usuario elija en su configuración. – eandersson