导入模块的参数
本文关键字:参数 模块 导入 | 更新日期: 2023-09-27 18:15:54
我需要为一个对象模块提供一些全局作用域,并且认为最好通过一个模块注入它。
我目前正在扫描程序集中的模块,因此,无法确定如何(干净地)提供这些参数。
我有一个控制台应用程序,我想根据应用程序的参数选择类型的实现。
问题是这些类型依赖于这些参数的特定反序列化,这是在查找时确定的。
我想做的是这样的:
public class Module : MyNinjectModule<Module>
{
private enum FictionalEnum
{
FirstType,
SecondType
}
private string[] _args;
private FictionalEnum Type
{
get
{
return IsFirstType(_args)
? FictionalEnum.FirstType
: FictionalEnum.SecondType;
}
}
public Module(string[] rawArgs)
{
_args = rawArgs;
}
protected override void LoadCustomBindings()
{
Bind<IBaseType>().To<FirstImpl>()
.When(req => this.Type == FictionalEnum.FirstType);
Bind<IBaseType>().To<SecondImpl>()
.When(req => this.Type == FictionalEnum.SecondType);
}
}
有人有什么建议吗?
在我看来这个逻辑不属于一个模块。我要么注入所有实例,然后在应用程序中决定采用哪个实例,要么注入一个工厂,让工厂根据参数创建正确的类型。