管理静态属性的最佳方法
本文关键字:最佳 方法 属性 静态 管理 | 更新日期: 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,名称等)