首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基类中的跟踪实例化

基类中的跟踪实例化
EN

Stack Overflow用户
提问于 2011-01-22 18:45:55
回答 2查看 144关注 0票数 1

目前,我以这种方式跟踪基类的实例数量:

代码语言:javascript
运行
复制
private static int _instanceCount = 0;

protected BaseClass()
{
    Interlocked.Increment(ref _instanceCount);

    if (_instanceCount > 1)
        throw new Exception("multiple instances detected.");
}

然后我有像这样的构造函数的子类:

代码语言:javascript
运行
复制
public ChildClass(): base()
{
    // Empty Constructor
}

当然,我也有例外。我可以将代码从BaseClass构造函数转移到ChildClass构造函数,但这是一种冗余(所有的子类都使用相同的代码)。

有没有办法在BaseClass中做到这一点

获得异常是否意味着我真的尝试根据上面的代码创建多个ChildClass实例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-22 18:51:21

出现异常意味着我真的试图根据上面的代码创建多个ChildClass实例吗?

表示存在多个基类(-derived)实例。

有没有办法在BaseClass上做到这一点?

在基类中做什么?这部分问题是不清楚的。您已经在基类中这样做了。

但是你的设置不会很有用,因为它只允许基类的一个实例,因此只允许一个派生类的实例。

我假设您希望每个派生类都是Singleton。要在基类中实现这一点,例如,您需要一个静态HashSet,您可以在其中使用Typename (this.GetType().Name)作为键。

票数 3
EN

Stack Overflow用户

发布于 2011-01-22 19:00:34

如果你想要一个单例工厂,你可以考虑使用IoC容器,而不是使用自己的容器。许多IoC容器支持将单例工厂行为作为标准特性。例如,您可以使用Unity

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4767360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档