如何使用singleton

时间:2015-05-07 11:45:30

标签: c# singleton

这是我用来将Singleton模式应用于所有派生类的代码。

public abstract class Service<T> where T : Service<T>, new()
{
    private static T _instance = null;

    public static T I()
    {
        if (_instance == null)
            _instance = new T();
        return _instance;
    }
}

public class DerivedService : Service<DerivedService>
{
    public DerivedService() { ... }
}

public class CustomService : DerivedService { ... }

因此,当我使用代码CustomService.I();时,类型为DerivedService而不是CustomService

编辑:我将其修改为CustomService,如(CustomService)CustomService.I()无效。 (我很抱歉)

有没有更好的方法可以不进行投射?任何想法,任何建议?

1 个答案:

答案 0 :(得分:1)

问题源于Derived类继承如下: DerivedService:服务&lt; DerivedService &gt;如果你想让课程成功,你可以这样写:

public class DerivedService<T> : Service<T> where T : DerivedService<T>, new
{
    { ... } 
}