导入模块的参数

本文关键字:参数 模块 导入 | 更新日期: 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);
    }
}
有人有什么建议吗?

导入模块的参数

在我看来这个逻辑不属于一个模块。我要么注入所有实例,然后在应用程序中决定采用哪个实例,要么注入一个工厂,让工厂根据参数创建正确的类型。