小编cb_*_*dev的帖子

依赖注入 - 何时使用属性注入

我有一个类有这样的构造函数:

    private string _someString;
    private ObjectA _objectA;
    private ObjectB _objectB;
    private Dictionary<Enum, long?> _dictionaryA;
    private Dictionary<Tuple<Enum,long?>, long?> _dictionaryB; 

    public SomeDiClass(string someString)
    {
        _someString = someString;

        _objectA = new ObjectA();
        _objectB = new ObjectB();

        _dictionaryA = new Dictionary<Enum, long?>();
        _dictionaryB = new Dictionary<Tuple<Enum, long?>, long?>();
    }
Run Code Online (Sandbox Code Playgroud)

我想从这个构造函数中获取依赖项创建.在第一步中,我将ObjectA和B依赖项移动到构造函数参数,以通过构造函数注入注入它们.我想为此目的使用IoC容器,这就是我现在停留的地方.问题是如何使用someString和词典.我需要将它们注入到类中,因为字典的内容将是单元测试的重要部分.通过属性注入注入字符串和字典是不是一个好主意(我不需要在其他类中使用它们),所以我最终会得到这样的东西?:

    private ObjectA _objectA;
    private ObjectB _objectB;

    public string SomeString { get; set; }
    public Dictionary<Enum, long?> DictionaryA { get; set; }
    public Dictionary<Tuple<Enum, long?>, long?> DictionaryB { get; set; }

    public SomeDiClass(ObjectA objectA, ObjectB …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection ioc-container

6
推荐指数
2
解决办法
2万
查看次数

从输入字符串的组合生成字符串

我有一个混乱的方法,它生成一个三个字符串的名称.这三个字符串可以为null.我要检查每个可能的组合并根据给定的可用值创建一个字符串.结果名称中的每个变量都没有固定位置/布局,这取决于所有字符串的可用性.

我的方法现在看起来像这样:

    private String GetName(string variable, string label, string dimension)
    {
        string result = String.Empty;
        if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(variable) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}] ({2})", label, dimension, variable);
        }
        else if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}]", label, dimension);
        }
        else if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(variable))
        {
            result = String.Format("{0} ({1})", label, variable);
        }
        else if (!String.IsNullOrEmpty(label))
        {
            result = String.Format("{0}", label);
        }
        else if (!String.IsNullOrEmpty(variable) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}]", variable, dimension);
        }
        else …
Run Code Online (Sandbox Code Playgroud)

c# refactoring

0
推荐指数
1
解决办法
81
查看次数