【问题标题】:Injecting a dependency that requires parameters for initialization注入需要参数进行初始化的依赖项
【发布时间】:2023-03-13 22:25:01
【问题描述】:

我正在将 Ninject 与 Windows Phone 应用程序一起使用。

我的逻辑包括 IBarViewModel 接口,即:

public interface IBarViewModel
    {
        double Width { get; set; }
        bool IsAchieved { get; set; }
        CornerRadius Corner { get; set; }
    }

目前,IBarViewModel 的实现只有一种 - GenericBarViewModel。

所有 IViewModel 实现者都必须在创建时设置这三个主要属性。

我想在运行时从我的代码中创建这些 IBarViewModel 的实例。我该怎么做。

当我针对一个实现进行编程时(这个类被简单地称为Bar),我只是像这样调用一个对象初始化器:

_bars.Add(new Bar
                {
                    Width = _totalWidth,
                    IsAchieved = false,
                    Corner = new CornerRadius(5, 5, 5, 5)
                });

根据这个问题的答案:Inject value into injected dependency 我可以将参数传递给 ninject 模块。

唯一的问题仍然存在:我是否必须将我的 ninject 内核深入到逻辑中才能进行这种参数化的依赖解析?

【问题讨论】:

  • here。只需让您的类在构造函数中接受这些参数并指示 ninject 提供哪些值。

标签: .net silverlight windows-phone-7 inversion-of-control ninject


【解决方案1】:

我认为您根本不应该为此使用 IoC。这没有任何意义。

为什么不简单地让 GenericBarViewModel 为 3 个属性设置默认值,使其抽象化,并让任何其他“Bar”ViewModel 实现从 GenericBarViewModel 继承?

究竟你想做什么?

【讨论】:

  • 克劳斯,这正是我昨天所做的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 2013-07-08
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多