重用 DryIoc 构造函数参数

DryIoc Constructor Argument Reused

我有一个 Container 为一个视图注册了一个 Presenter class:

Container.Register<ListCellPresenter>();

Presenter 的构造函数为其视图采用一个参数:

public ListCellPresenter(ListCellView view) {
     this.view = view;
}

我有一个 View 解析 Presenter 的实例,将其自身作为构造函数的参数传递:

Container.Resolve<ListCellPresenter>(new object[] {this});

在主屏幕上,我有多个 View 实例,每个实例都需要自己的 Presenter 实例。那部分有效。

但是,DryIoc 似乎不断重复使用它在运行时收到的第一个对象来满足构造函数的参数。 Presenter 的每个新实例都会收到 View 的第一个实例,而希望它们每个都应该收到唯一的实例。

我尝试了在文档中找到的示例的各种组合,包括:

如有任何提示或指导,我们将不胜感激。

我发现打开命名作用域可以满足您的需要。

var container = new Container();
container.Register<TargetClass>();
using (var scope = container.OpenScope("View_1"))
{
    var instanceA = scope.Resolve<TargetClass>(new[] { typeof(string) });    
}

using (var scope = container.OpenScope("View_2"))
{
    var instanceB = scope.Resolve<TargetClass>(new[] { typeof(int) });
}

该问题确实是一个bug,在最新的预览版中已经修复: https://github.com/dadhi/DryIoc/issues/29