我有不同的类库,每个类库都实现一个接口IImportCharacter
。在我的主应用程序中,用户选择一个 DLL,应用程序需要检查库是否实现了接口,然后在实现它的库中实例化类。我正在尝试使用反射来做到这一点,但我不断得到:
无法将“CustomCharacter.Ogre”类型的对象转换为“MainGame.IImportCharacter”类型。
Assembly assembly = assemblyPath;
foreach (Type type in assembly.GetTypes())
{
IImportCharacter instance = null;
if (type.GetInterface("IImportCharacter") != null)
{
//exception thrown at this line
instance = (IImportCharacter)Activator.CreateInstance(type);
}
}
我已经将同一个IImportCharacter
文件复制到主项目中,否则编译器会抱怨它不知道是什么IImportCharacter
。我认为这可能会导致问题,因为它与动态加载的不是同一个。我怎样才能解决这个问题?