我有一个相当大的开源类,我需要从静态转换为非静态。
我需要这样做的原因是使其线程安全;我想要每个线程的一个类副本。
通常,将C#库从静态转换为非静态的建议步骤是什么?
答案 0 :(得分:2)
要编译吗?从所有成员中删除static
应该这样做。
如果你想要更犹太的东西,那么你应该从所有的调用中获取通用参数并将它们移动到构造函数中。
对我来说似乎很简单。你有特定的问题吗?
答案 1 :(得分:2)
我已将数据层从静态类升级到无静态类。所以
1st:删除类和方法上的“static”关键字
第二:在旧的静态类中添加一个Singleton
public class Foo
{
#region Singleton
Foo()
{
}
public static Foo Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
static Nested() { }
internal static readonly Foo instance = new Foo();
}
#endregion
第三:用Foo.Instance.DoSomething()代替Foo.DoSomething()
替换你的课程的每个电话。第四:编译和利润
答案 2 :(得分:2)
我认为你所说的是,由于这是一个如此庞大的课程,因此想象一下如何做到这一点并不容易,所以你想要采取一些步骤。这是:
MyClass
的{{1}}。保留所有这些地方的清单,以便您可以轻松地重新访问它们。MyClass.instance()
,而不是使用MyClass.instance()
全局引用它。在每个步骤之间运行测试框架。