我一直在阅读关于单身概念的一些内容。虽然没有完全理解它,但我想在我的基类中使用我的实例getter。
例如,我的类基类RepositoryBase
将具有以下方法:
private static RepositoryBase _instance;
public static RepositoryBase Instance
{
get
{
if (_instance == null)
_instance = new RepositoryBase();
return _instance;
}
}
这真的有意义吗?我相信当一个新的子类(例如UserRepository
)继承RepositoryBase
时,检索Instance
时仍然会得到的是一般类RepositoryBase
的实例,不是UserRepository
的实例。
有什么方法可以让Instance
自动返回子类,同时仍然保留在基类中?谢谢!
答案 0 :(得分:2)
静态成员不是继承的,因为它们是静态的。这就是为什么你对它的看法无论如何都不会起作用。
答案 1 :(得分:2)
您可以尝试使用通用基类
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;