![](/img/trans.png)
[英]Best way to distinguish two calling assemblies that refer to static property
[英]Best way to manage a static property
我有以下代碼:
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
之外的所有內容MyProp
就緒。 我需要一種方法來跟蹤整個代碼中的原始input.Name
,因為它可以更改,並且還因為ProcessMethod
可以在內部使用不同的input.Name
值再次被調用,這是由於業務規則所致,我需要聲明第二個調用來自input.Name
。
顯然,這是不好的,因為如果兩個人同時執行此操作,他們將共享相同的MyProp
值,並且最后簡單地使null為空似乎是危險和棘手的。 我實際上沒有將這種方法更改為非靜態的選擇,因為這將涉及更改很多代碼庫,這實際上不是一個選擇。
有什么方法可以使用靜態屬性,但是仍然可以保留我的原始input.Name
值而不會冒線程安全問題的風險? 我在想的一個選擇是讓每個方法都接受一個input.Name()
和track就是這種方式(並刪除MyProp
),但是我MyProp
它很快就失控了,而且非常混亂。
我不需要將其作為屬性,但是如果是,則顯然在此類中它必須是靜態的。
由於它可能是多用戶環境,因此將字符串替換為ConcurrentDictionary
,在其中將input.Name()
存儲為Value
並將用戶的唯一標識符(id,名稱等)存儲為Key
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.