グローバル アプリケーション構成として使用するクラスを作成しようとしています。このクラスは次のようになります。
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 プロパティをスレッドセーフにする方法もわかりません。