假设我使用扩展方法创建了一个类似静态的类:
public static class MyStaticExtensionClass
{
private static readonly Dictionary<int, SomeClass> AlgoMgmtDict
= new Dictionary<int, SomeClass>();
public static OutputClass ToOutput(this InputClass input)
{
// clears up the dict
// does some kind of transform over the input class
// return an OutputClass object
}
}
在多用户系统中,状态管理字典是否无法为转换算法提供正确的值?常规类是一个更好的设计还是推动方法中的Dictionary更好的设计?
答案 0 :(得分:4)
您的词典只有三种可用场景:必须共享,或者不得共享,或者不知道或关心
如果必须共享,则必须实施正确的锁定。但是,因为你在ToOutput()
中做的第一件事就是清除字典,它看起来不像分享它会给你带来许多好处。
所以,我们归结为剩下的两个场景(不得共享,或不知道或不关心),在这两种情况下都是最好在ToOutput()
内的局部变量中隔离字典:
public static OutputClass ToOutput(this InputClass input)
{
Dictionary<int, SomeClass> algoMgmtDict = new Dictionary<int, SomeClass>();
// Dictionary starts up empty, no need to clear anything.
// Do some kind of transform over the `input` object.
// Return an OutputClass instance.
}