管理静态属性的最佳方法

本文关键字:最佳 方法 属性 静态 管理 | 更新日期: 2023-09-27 18:01:28

我有这样的代码:

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,因为它可以改变,而且由于业务规则,ProcessMethod可以在内部使用不同的input.Name值再次调用,并且我需要声明这第二次调用来自input.Name

显然,这是不好的,因为如果两个人同时这样做,他们都将共享相同的MyProp值,并且简单地在最后使is为空似乎是危险的和黑客的。我真的没有选择将此方法更改为非静态,因为这将涉及更改大量代码库,这真的不是一个选项。

使用静态属性的方法是什么,但仍然能够保持我原来的input.Name值而不冒线程安全问题?我正在考虑的一种选择是让每个方法都接受input.Name()并以这种方式跟踪(并删除MyProp),但我可以想象这很快就会失控,而且非常混乱。

我不需要把它设为属性,但如果是的话显然需要在这个类中设为静态

管理静态属性的最佳方法

由于它可能是一个多用户环境,那么将字符串替换为ConcurrentDictionary,其中将input.Name()存储为Value,并将Key存储为用户的唯一标识符(id,名称等)