У меня есть этот код:Лучший способ управления статическое свойство
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 в конце кажется опасным и взломанным. У меня нет возможности изменить этот метод на нестатический, потому что это связано с изменением МНОГО кода, что на самом деле не является вариантом.
Каковы способы использования статического свойства, но при этом сохраняются мои исходные значения input.Name
без риска возникновения проблем с безопасностью потоков? Один из вариантов, о котором я думаю, заключается в том, чтобы каждый метод принимал input.Name()
, и трек был таким образом (и удалял MyProp
), но я могу представить, что выходите из рук быстро и крайне беспорядочно.
Мне не нужно, чтобы это было свойством, но если это, очевидно, должно быть статическим в этом классе.
Я не знаю ответа на это, но я настоятельно рекомендую сделать «MyProp» или любое другое подобное решение, в котором вы получите «частный», а не «публичный». Таким образом, по крайней мере, вы устраните вероятность того, что он будет изменен любым методом вне 'ProcessClass', тем самым значительно уменьшив вероятность сбоя. –
Как правило, кажется, что это часть более крупной проблемы дизайна. – Dzienny