私はコマンドパターンをC#で使用しています。 RequiredData
という名前のプロパティを含むクラスがあります。C#で複数のスレッドのすべての派生クラスに同じインスタンスを共有するにはどうすればよいですか?
public class RequiredData
{
public Class1 class1 { get; set; }
public int value1 {get; set;}
}
抽象クラスBaseCommand
があるとcommand1 , command2 etc
のようないくつかの派生クラスがあります。私は、全体のプロセスの間にしたい
command1.Execute();
command2.Execute();
更新され、すべてのコマンドから使用できる共有RequiredDataオブジェクトを持っている:
abstract class BaseCommand : ICommand { }
コマンドは、のようないくつかのアクションが動作します。 ExecuteメソッドのCommand1に
は次のように値1にアクセスする:
RequiredData.Value1 = 5
及びIは、ベースでこれを試み、その後に、Command2に
var k = RequiredData.Value1 //and be 5..
or RequiredData.Class1.something = "something"
ように、この値を持っている方法を実行例えば クラス:
abstract class BaseCommand : ICommand
{
//or protected and not private...
public static RequiredData RequiredData = new RequiredData();
}
はこのスレッドセーフですか?
ここでスレッドセーフソリューションに必要な変更は何ですか?
'static'は正しい選択ですが、それはすべての派生クラスのすべてのインスタンスで使用されるため、探しているのかどうかは不明です。 –
依存性注入とIoCを使用することを検討してください。これは、通常、より良いアプローチです。 – SLaks
Explain the downvote plz !!!! –