私はこのコードを持っています:
public static class ProcessClass()
{
public static string MyProp {get;set;}
public static void ProcessMethod(InputObject input)
{
if(String.IsNullOrEmpty(MyProp)
MyProp = input.Name();
//do stuff
MyProp = null;
}
}
これで、 を除くすべてMyProp
がすでに整っていました。元のコードは変更される可能性があり、またビジネス ルールにより異なる値で内部的に再度呼び出される可能性がinput.Name
あるため、コード全体で元のコードを追跡する方法が必要でした。この 2 回目の呼び出しは.ProcessMethod
input.Name
input.Name
2 人が同時にこれを行うと、両方とも同じMyProp
値を共有し、単に最後に null を作成することは危険でハッキーに見えるため、明らかにこれは悪いことです。このメソッドを非静的に変更するオプションは実際にはありません。これは、実際にはオプションではないコードベースの多くを変更する必要があるためです。
input.Name
静的プロパティを使用しながら、スレッド セーフの問題を危険にさらすことなく元の値を維持できる方法はありますか? 私が考えている 1 つのオプションは、すべてのメソッドに を受け入れさせ、input.Name()
その方法を追跡する (そして を削除するMyProp
) ことです。
これをプロパティにする必要はありませんが、そうである場合は、明らかにこのクラスで静的にする必要があります。