C# 将参数传递给懒惰的单例GetInstance
我正在使用C# 将参数传递给懒惰的单例GetInstance,c#,lazy-evaluation,C#,Lazy Evaluation,我正在使用.net4的Lazy-type方法创建一个单例实例。但是我想将配置文件的三个文件路径传递给返回单例的属性实例 public sealed class Singleton { private static readonly Lazy<Singleton> lazy = new Lazy<Singleton>(() => new Singleton()); public static Singleton Instance {
.net4的Lazy-type
方法创建一个单例实例。但是我想将配置文件的三个文件路径传递给返回单例的属性实例
public sealed class Singleton
{
private static readonly Lazy<Singleton> lazy =
new Lazy<Singleton>(() => new Singleton());
public static Singleton Instance { get { return lazy.Value; } }
private Singleton()
{
}
}
公共密封类单例
{
私有静态只读惰性=
新的懒惰(()=>newsingleton());
公共静态单例实例{get{return lazy.Value;}}
私人单身人士()
{
}
}
你能告诉我们为什么你的班级需要单身吗?也许您可以使用IoC容器,在这种情况下,您可以确保IoC设置中只有一个类实例
如果您真的想使用单例,可以考虑添加一些init/config方法。您的单例必须在访问实例之前进行初始化(如果不是,则抛出异常)。我不喜欢这个解决方案,因为Singleton类的用户需要知道初始化步骤。//
/// <summary>
/// Single ton class
/// </summary>
public sealed class Singleton
{
private static Lazy<Singleton> lazy = null;
/// <summary>
/// You can use this param even you can pass to your base class
/// </summary>
/// <param name="parameter"></param>
private Singleton(int parameter)
{
}
/// <summary>
/// Creaeting single object
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public static Singleton CreateSingletonObj(int parameter)
{
if (lazy == null)
{
lazy = new Lazy<Singleton>(() => new Singleton(parameter));
}
return lazy.Value;
}
}
///单吨级
///
公共密封类单件
{
私有静态Lazy=null;
///
///即使可以传递给基类,也可以使用此参数
///
///
私有单例(int参数)
{
}
///
///克里特单个物体
///
///
///
公共静态单例CreateSingletonObj(int参数)
{
if(lazy==null)
{
lazy=newlazy(()=>newsingleton(参数));
}
返回lazy.Value;
}
}
我认为单例模式不适合您的用例。也许您可以尝试工厂模式,让工厂为您提供一个正确配置的实例。IoC容器能否确保只存在一个实例?我不熟悉这个概念。是的,像StructureMap这样的IoC容器可以让你指定在应用程序@liv2hak的引导过程中,你是设法使用了上面的代码还是决定使用IoC?@jedgard似乎,对于IoC的实现,这里有一个帖子,上面有一个@MichaŻołnieruk的列表,这段代码没有编译Init
被视为静态ctor。In必须使用void
或Singleton
返回<代码>惰性
私有成员不能是只读
,因为它是在静态方法中初始化的。