一般来说,我是 Ninject 和 Dependency Injection 的新手,所以请原谅我的菜鸟。=)
我有几个IConfig
接口实现,它们扫描一个程序集及其依赖项以查找实现IConfigOption
接口的类型。每个IConfig
实现都从不同的来源检索它们的值。
这些实现将根程序集作为构造函数参数从哪里开始扫描,我试图提出一个注入这些值的绑定。到目前为止,我正在考虑以下内容:
Bind<IConfig>().To<Config>().WithConstructorArgument("rootAssembly", target);
我的问题是,我似乎无法找到一种方法来获取对注入类的target
程序集的引用。Config
如果没有 DI,我会使用Assembly.GetCallingAssembly()
,但在这种情况下,这会产生绑定所在的程序集,而不是所需的目标程序集。
另外,我需要一种从将接收注入的类/成员中指定预期实现的方法,例如,客户端类 A 请求使用的Config
实现者,RoleEnvironment
客户端类 B 请求使用的Config
实现者ConfigurationManager
。这是一个说明预期用途的示例:
public class Client
{
[UseApplicationConfig]
public IHelper WithAppConfig { get; set; }
[UseRoleEnvironmentConfig]
public IHelper WithRoleEnvironmentConfig { get; set; }
}
public class Helper : IHelper
{
public Helper(IConfig config)
{
}
}
我觉得要么我从错误的角度看这个,要么我错过了明显的东西,但我不确定我应该寻找什么。最好的方法是如何做到这一点?
非常感谢。
编辑:添加了预期用途的示例,并为清楚起见重新表述了问题的某些部分。