【发布时间】:2011-06-06 10:08:58
【问题描述】:
我希望我的构造函数调用另一个带参数的构造函数,但是当我这样做(MyProperty)时,MyProperty 必须是静态的。问题出在这个静态属性的获取器中,我必须从结构映射容器中获取 ISettingReader 的实例,因为它是静态的,我的容器只包含两个元素而不是 50 多个元素,然后它找不到实例. (ISettingReader上pluginFamily的错误)
这是我的代码。
private static Func<LinqDataContext> _contextFactory;
public static Func<LinqDataContext> DefaultContextFactory
{
get
{
var settingReader = ObjectFactory.GetInstance<ISettingReader>(); // I get an error saying it can't find ISettingReader()
var connectionString = settingReader.GetSetting("MyProject.ConnectionString");
_contextFactory = () => new LinqDataContext(connectionString);
return _contextFactory;
}
}
public MyProjectViewModelService() : this(DefaultContextFactory)
{
}
public MyProjectViewModelService(Func<LinqDataContext> contextFactory)
{
_contextFactory = contextFactory;
}
我认为如果我可以摆脱我的静态关键字,它应该可以工作。当我在 Program.exe 中启动我的应用程序时,我确认我已经在 structureMap 容器中初始化了我的 ISettingReader
那我该怎么办? 谢谢!
约翰
PS:我在stackoverflow上发现了类似的问题,但他没有使用结构映射: Constructor chaining with intermediate variables
【问题讨论】:
标签: c# constructor structuremap