簡體   English   中英

管理靜態屬性的最佳方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM