我正在从外部程序集加载类型并希望创建该类型的实例。但是,此类型/类是由当前管理/绑定的对象设置为构造函数注入的Ninject
。我该如何使用Ninject
创建此类型的实例并注入任何构造函数依赖项?
下面是我如何获得这种类型。
Assembly myAssembly = Assembly.LoadFrom("MyAssembly.dll");
Type type = myAssembly.GetType("IMyType");
假设你已经创建了一个Kernel
,您应该能够通过以下方式创建并解决它:
kernel.Get(type)
....然后我读了问题...假设 MyAssembly.dll 有 IMyType 的实现,您需要(在主程序集中):-
kernel.Load( "MyAssembly.dll")
在动态加载的程序集中:-
public class Module : StandardModule
{
public override void Load()
{
Bind<IMyType>().To<MyType>();
}
}
并且不要忘记看看 MEF 是否是这里的答案,因为如果您可以帮助的话,您不想编写大量显式插件管理和/或检测逻辑(但如果您只是做简单的事情并且只做Assembly.LoadFrom()
出于提出问题的目的,您可能仍处于 Ninject 的最佳位置。
同上,如果您确实需要通过以下方式解析接口Assembly.GetType()
,你可能应该使用类似的东西dynamic
要进行后期绑定,您可能必须这样做(在您意识到之前,您应该使用动态语言或托管脚本语言)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)