所以我在运行时加载一个程序集,并且我还根据程序集类型使用泛型。为了获得正确的类型,每个 DLL 都在实现一个我希望在那里的工厂,它用正确的泛型类型实例化类。
Type factoryType = assembly.GetType("MyCompany.ScenarioPlayer.PlayerFactory");
MethodInfo method = factoryType.GetMethod("CreatePlayer", BindingFlags.Public | BindingFlags.Static);
player = (IScenarioPlayer)method.Invoke(null, null);
此代码在方法上失败。当我没有管理权限时调用。以我使用它的方式对 MethodInfo.Invoke 的任何调用都需要管理员,这是否正确?我进入了我的 DLL 代码,它甚至没有通过这个调用进入工厂。
编辑:原来有一个没有考虑到的目标 DLL 的依赖关系。我确实喜欢提出的 MEF 框架想法。