我需要能够调用此方法
IDatabase cache = CacheConnectionHelper.Connection.GetDatabase();
从我的应用程序的任何地方,我从一些azure页面获得了这个连接助手类
public class CacheConnectionHelper
{
private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
return ConnectionMultiplexer.Connect(SettingsHelper.AzureRedisCache);
});
public static ConnectionMultiplexer Connection
{
get
{
return lazyConnection.Value;
}
}
}
问题是:
答案 0 :(得分:1)
正确,它是单身。
如果您使用的是.NET 4(或更高版本),则可以使用System.Lazy 键入使懒惰真的很简单。你需要做的就是通过一个 委托给调用Singleton构造函数的构造函数 - 使用lambda表达式最容易完成。
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()
{
}
}
如果您需要,还可以使用IsValueCreated property检查实例是否已创建。
答案 1 :(得分:1)
是的,这是一个单身人士因为Lazy<T>
确保你的工厂委托
return ConnectionMultiplexer.Connect(SettingsHelper.AzureRedisCache);
...仅调用一次。它将在第一次读取lazyConnection.Value
时调用。剩余的调用将返回从第一次调用返回的相同值/实例(它被缓存)。
为清楚起见,我会CacheConnectionHelper
静态:
public static class CacheConnectionHelper
顺便说一下,您的代码似乎是从this MSDN article复制的。
这提供了一种线程安全的方法来初始化单个连接的ConnectionMultiplexer实例。