0

私はシングルトンの概念について少し読んでいます。完全には理解していませんが、インスタンスゲッターを基本クラスに入れたいと思います。

たとえば、私のクラス基本クラスRepositoryBaseには次のメソッドがあります。

private static RepositoryBase _instance;
public static RepositoryBase Instance
{
    get
    {
        if (_instance == null)
            _instance = new RepositoryBase();
        return _instance;
    }
}

これは実際に意味がありますか?新しい子クラス(たとえばUserRepository)が継承するRepositoryBase場合、取得時にまだ取得しているのは、のインスタンスではなくInstance、一般クラスのインスタンスであると思います。RepositoryBaseUserRepository

Instance基本クラスのままで子クラスを自動的に返すようにする方法はありますか?ありがとう!

4

2 に答える 2

3

一般的な基本クラスで試すことができます

abstract public class RepositoryBase<T>
    where T : RepositoryBase<T>, new()
{
    public static readonly T Instance = new T();
}

public class SpecificRepository : RepositoryBase<SpecificRepository>
{
}

次に、このように使用します

var obj = SpecificRepository.Instance;
于 2012-07-17T17:58:47.107 に答える
2

静的メンバーは静的であるため、継承されません。それが、あなたのそれに対する見方がとにかくうまくいかない理由です。

于 2012-07-17T17:52:24.607 に答える