这个静态类会在多用户场景中断开吗?
-
14-10-2019 - |
题
说我做一个静态课程,例如按照扩展方法的关注:
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
}
}
在多用户系统中,状态管理字典是否无法为转换算法提供正确的值?普通课程会成为更好的设计,还是将方法内的字典推出更好的设计?
解决方案
您的字典只有三种场景:要么 必须 分享,否则 一定不 分享,或者你 不知道或关心.
如果它 必须 被共享,您必须实现正确的锁定。但是由于您要做的第一件事 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.
}
不隶属于 StackOverflow