我想了解我是否需要在结构地图代码中使用.singleton()。 stackoverflow(StructureMap singleton)上已经有一个关于此的问题,但我想确定我肯定使用正确的语法。其中一个答案暗示如果我返回一个类型我需要使用.singleton()以便我的代码在这里:
x.For<IApprovedProgrammesHelper>().Use<ApprovedProgrammesHelper>();
x.For(typeof(ICache<>))
.Use(typeof(CacheHelper<>))
.Dependencies.Add(typeof(TimeSpan), Settings.Instance.HttpCacheExpiration);
应如下所示:
x.For<IApprovedProgrammesHelper>().singleton().Use<ApprovedProgrammesHelper>();
x.For(typeof(ICache<>))
.Singleton()
.Use(typeof(CacheHelper<>))
.Dependencies.Add(typeof(TimeSpan), Settings.Instance.HttpCacheExpiration);
这是对的吗?或者我误解了这应该如何运作?我不完全确定代码对代码的影响。值得一提的是.Use&lt;&gt;中的类型。声明无论如何都不遵循单身模式。
感谢您提前的时间 萨姆
答案 0 :(得分:0)
您对Singleton API的使用是正确的,但是如果不知道您的代码在做什么,很难说您是否应该将其设为单身。
通过添加Singleton()
方法调用,您可以告诉StructureMap您希望它创建一个ICache<>
实例,并将该对象的任何其他请求解析为一个实例。
例如,将以下类标记为单例将始终在第一次调用时在日期和时间中解析:
public class SingletonExample
{
private readonly DateTime _time;
public SingletonExample(){
_time = DateTime.Now;
}
public DateTime GetDateTime()
{
return _time;
}
}