我即将创建一个将用作全局应用程序配置的类。这个类应该是这样的:
public class GlobalConfiguration
{
private static volatile GlobalConfiguration _current;
private static ReaderWriterLockSlim _instanceLock = new ReaderWriterLockSlim();
public ICipher Cipher {get;set;}
public IHasher Hasher {get;set;}
//....
public static GlobalConfiguration Current
{
get
{
if (_current == null)
{
_instanceLock.EnterWriteLock();
if (_current == null) _current = new GlobalConfiguration();
_instanceLock.ExitWriteLock();
}
return _current;
}
}
}
现在我希望能够执行以下操作:
GlobalConfiguration.Current.Cipher = new AesCipher();
我现在担心的是,即使我的 GlobalConfiguration 类被设计为单例,Cipher 属性会发生什么?_instanceLock 用于 GlobalConfiguration 类,但我不确定如何使用它来使 Cipher 属性线程也安全。