将单例定义移到C#中的mixins中

时间:2013-09-16 07:39:26

标签: c# .net mixins

我必须将大约10个班级变成单身,我认为不是复制粘贴代码,而是使用mixins是有意义的,就像这里描述的那样:http://msdn.microsoft.com/en-us/vstudio/bb625996.aspx

但是,我不需要那么多额外的方法,但是对类本身进行了更多的额外更改,我在应用这些指令时遇到了问题。

我尝试创建一个空接口ISingleton,然后将单例部分作为扩展添加到新类public static class Singleton

这是我想使用的单身部分:

    public static SomeClass Instance
    {
        get { return _instance ?? (_instance = new SomeClass ()); }
    }

    private static SomeClass _instance;

但是当它作为扩展名添加时我遇到了问题 - 如何定义Instance属性,所以它可以被许多类重用? 第二个问题 - 我仍然需要手动将构造函数更改为私有。

这种方法有意义吗? 我之前没有使用过mixins,也许这不是正确的场景吗?

1 个答案:

答案 0 :(得分:0)

您给出的mixins链接显示了用于向支持接口的所有对象添加功能的扩展方法。您仍然需要先创建对象。由于单例模式处理对象的创建,因此应用这些技术基本上还为时过早。

Singleton不必如此复杂,你正在阅读Jon Skeets的文章,这很简单:

public sealed MyClass
{
   private MyClass(){}
   public static MyClass Instance = new MyClass();
}

通常都是你需要的。如果需要,我很乐意重复10次代码。或者可以使用服务定位器或IoC容器来管理对象的生命周期。