使用结构图在运行时将对象传递给 class 构造函数
Passing an object to class constructor in runtime using structuremap
我的项目中有以下 class:
public partial class MyForm : BaseForm, IMyInterface
{
public MyForm(MyDto dto)
{
_dto = dto;
InitializeComponent();
}
}
并使用以下代码在结构图中注册:
ObjectFactory.Configure(x => x.For<IMyInterface>()
.Use<MyForm>()
.Ctor<MyDto>("MyDto"));
当我想使用class时,我使用了以下代码:
var dto = new MyDto(){
Id = 43,
From = DateTime.Now(),
To = DateTime.Now().AddDays(1)};
IMyInterface frm = ObjectFactory.Container.With("MyDto")
.EqualTo(dto).GetInstance<IMyInterface>();
但是传递给frm
的dto
值和我传递的值不一样(Id = 43
, ....),它是[=17的默认值=] class(Id = 0
, ...)。
问题出在哪里?
我用下面的代码解决了这个问题:
IMyInterface frm = ObjectFactory.Container
.With<MyDto>(dto)
.GetInstance<IMyInterface>();
我的项目中有以下 class:
public partial class MyForm : BaseForm, IMyInterface
{
public MyForm(MyDto dto)
{
_dto = dto;
InitializeComponent();
}
}
并使用以下代码在结构图中注册:
ObjectFactory.Configure(x => x.For<IMyInterface>()
.Use<MyForm>()
.Ctor<MyDto>("MyDto"));
当我想使用class时,我使用了以下代码:
var dto = new MyDto(){
Id = 43,
From = DateTime.Now(),
To = DateTime.Now().AddDays(1)};
IMyInterface frm = ObjectFactory.Container.With("MyDto")
.EqualTo(dto).GetInstance<IMyInterface>();
但是传递给frm
的dto
值和我传递的值不一样(Id = 43
, ....),它是[=17的默认值=] class(Id = 0
, ...)。
问题出在哪里?
我用下面的代码解决了这个问题:
IMyInterface frm = ObjectFactory.Container
.With<MyDto>(dto)
.GetInstance<IMyInterface>();