我可以通过做得到所有注册类型的列表
var myTypes = kernel.Get<List<IMyInterface>>();
MyType 实现需要接受一个构造函数参数。我以为我可以通过这样做来做到这一点
kernel.Get<List<IMyInterface>>(
new ConstructorArgument("argName", argValue ) );
但这似乎不起作用。我收到一个异常,说它正在尝试解析参数“argName”并且不能。我猜它正在尝试将该参数用于列表,而不是列表中的每种类型。
有没有办法做到这一点?
更新:
我可以这样做
var types =
from t in typeof(IMyInterface).Assembly.DefinedTypes
where typeof(IMyInterface).IsAssignableFrom(t)
where t.IsClass
select (IMyInterface)kernel.Get(t,
new ConstructorArgument("argName", argValue));
这并不理想。
更新:
我最终将我的类构造函数更改为不接受参数。我认为按照我的工作方式,这不是一个好的 DI 实践。