【发布时间】:2011-08-21 21:19:50
【问题描述】:
我有一个父类型,并且有一些子类型继承自它。
我想确保只有一个父实例以及所有子类型。父类型:
private static int _instanceCount = 0;
public ParentClass()
{
protected ParentClass() // constructor
{
_instanceCount++;
if (_instanceCount > 1)
throw new exception("Only one instance is allowed.");
}
}
示例子类:
private static int _instanceCount = 0;
public ChildClass() : ParentClass
{
public ChildClass() : base() // constructor
{
_instanceCount++;
if (_instanceCount > 1)
throw new exception("Only one instance is allowed.");
}
}
该解决方案适用于子类型,但是当它们调用基类构造函数时,我无法区分是否从其他类型调用了基构造函数,因此解决方案失败。
我怎样才能做到这一点?
【问题讨论】:
-
你可以通过单例类实现同样的功能
-
单例在这里不起作用。我将这些类型与
MEF一起使用,它将根据需要延迟实例化它们。事实上,我已经将container实现为更高级别的Singleton,这是为了确保我没有多个container。
标签: c# inheritance instance