我有这个代码:
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
值,并且最后简单地设置为 null 似乎很危险和 hacky。我真的没有选择将此方法更改为非静态的,因为这将涉及更改很多代码库,这不是一个真正的选择。
有什么方法可以使用静态属性,但仍然能够保持我的原始input.Name
值而不会冒线程安全问题的风险?我在想的一个选择是让每个方法都接受一个input.Name()
并且跟踪是这样的(并删除MyProp
),但我可以想象它很快就会失控,而且非常混乱。
我不需要把它作为一个属性,但如果是的话,它显然需要在这个类中是静态的。