我扩展了一个单例类,它通过以下调用
获取对单例对象的引用SingletonClass.singleton
现在我希望每当我在singleton
上调用CustomSingletonClass
变量时,我都会引用CustomSingletonClass
而不是SingletonClass
。
现在我正在使用类型转换来实现((CustomSingletonClass)CustomSingletonClass.singleton)
我是否必须以某种方式覆盖单例属性?
答案 0 :(得分:0)
通常单例使用静态属性来获取对象的实例(看起来像你的是SingletonClass.singleton)。
由于它是静态调用,因此无法在继承的对象中覆盖此属性,因为调用将始终在当前类型上完成,而不是在实例上完成(覆盖静态只是无意义)。
您可以尝试通过向单例添加setter并在任何调用之前设置所需的实例来更改其工作方式。
public class A
{
private static A _instance;
public static A Instance
{
get
{
if (_instance == null)
{
_instance = new A();
}
return _instance;
}
set { _instance = value; }
}
}
public class B : A
{
}
A.Instance = new B();