1
我有一个问题Structuremap决心类型.... 免得说我有这样一个类:与参数
public class A: InterfaceA
{
private FileInfo _fileInfo = null;
public A(FileInfo fileInfo)
{
this._fileInfo = fileInfo;
}
...
}
和另一个问题:
public class B: InterfaceB
{
private A _classA = null;
public B(A classA)
{
this._classA = classA;
}
public void Do()
{
FileInfo fi = new FileInfo(...);
_classA.DoSomething();
}
}
现在,我已经安装StructureMap寄存器是这样的:
For<InterfaceA>().Use<A>();
For<InterfaceB>().Use<B>();
当我执行B.Do()时,结构图会抛出错误,因为FileInfo参数没有注册表项。 A类(FileInfo)的参数在B类中构造; 我知道我可以这样做:ObjectFactor.GetInstance()并传递参数,但我想依赖注入而不是服务提供者。我希望当我做ObjectFactory.GetInstance()时,来构造整个对象图。
如何做到这一点?
是的,但往哪里放: 对于。使用().Ctor ().Is(myFile); 我不能把它放到我的寄存器中,因为FileInfo在实例化中是未知的? –
Luka
2010-09-02 12:08:10
如果在执行Do方法之前未知文件名,则必须采用工厂方法或考虑将文件传递给方法。 – PHeiberg 2010-09-06 11:00:19
编辑我的答案包括工厂方法。 – PHeiberg 2010-09-06 12:01:14