I sombrero de los mismos problemas con una biblioteca mía que proporciona "complemento" -funcionalidad ... Lo tengo finalmente funcionando ...
Aquí estaba mi problema: tenía un ensamblaje principal usando complementos, un ensamblaje con el complemento (Plugin.dll) Y (importante) otro ensamblado que proporcionaba la funcionalidad de complemento (Library.dll).
Plugin.dll hacía referencia al ensamblaje principal (para poder ampliarlo) y el Library.dll con el plugin-func. - Los binarios han llegado a un directorio "./Plugins" relativo al ensamblaje principal.
El ensamblaje principal también hace referencia al plugin-func. ensamblado para utilizar el "PluginManager" se escribió. Este "PluginManager" obtiene una ruta y carga todos los archivos * .dll mediante reflexión para analizar si hay una interfaz "IPlugin" (que también proviene de Library.dll).
Cada vez que llamé al PluginManager para cargar los complementos, no pude convertirlos a "IPlugin" aunque lo implementaron.
Casi me enojo, pero luego descubrí todo el problema. Al compilar el complemento, no solo se escribió "Plugin.dll", sino que también se escribió "Library.dll" en el directorio "./Plugins". Al cargar accidentalmente el "Library.dll" cada vez con mi PluginManager ahora tenía dos tipos de "IPlugin": uno en el "Library.dll" real que se usa desde el ensamblaje principal y otro que se cargó a través de mi PluginManager, y ¡esos eran incompatibles!
Atención: si simplemente no carga "./Plugins/Library.dll", no obstante se encuentra con el problema, porque si carga "Plugin.dll" que hace referencia a "Library.dll", simplemente utiliza el que está en el mismo directorio ... TILT ... !! Mi PluginManager ahora solo elimina "Library.dll" donde lo encuentra.
La clave es: ¡asegúrese de no acceder a dos conjuntos en diferentes contextos!
Después de volver a leer su pregunta, no creo que esto sea lo que quería. Perdón :) – cwap
El operador "como" es exactamente lo que * no * desea utilizar al depurar errores de conversión (silenciosamente se traga excepciones, dejándolo no es una manera fácil de depurar por qué falló el reparto) – ckarras