Question

numéro de trace actuellement I instances d'une classe de base de cette façon:

private static int _instanceCount = 0;

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

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

Alors j'ai des classes d'enfants avec le constructeur comme ceci:

public ChildClass(): base()
{
    // Empty Constructor
}

et je reçois bien sûr des exceptions. Je peux déplacer le code du constructeur BaseClass au constructeur ChildClass mais il est une sorte de redondance (tous les enfants avec le même code).

Est-il possible de le faire dans le BaseClass?

obtient des moyens d'exception que j'ai vraiment essayé de créer plus d'une instance du ChildClass selon le code ci-dessus?

Était-ce utile?

La solution

  

obtient des moyens d'exception que j'ai vraiment essayé de créer plus d'une instance du ChildClass selon le code ci-dessus?

Cela signifie qu'il n'y a plus de 1 baseclass (dérivée de) instance.

  

Est-il possible de le faire, il le BaseClass?

Fais ce que dans la classe de base? Cette partie des questions ne sait pas. Vous faites déjà dans la classe de base.


Mais votre configuration ne sera pas très utile car il ne permettra une instance de la classe de base et donc de seulement 1 des classes dérivées.

Je suppose que vous voulez que chaque classe dérivée d'être un Singleton. Pour mettre en œuvre que dans la classe de base dont vous aurez besoin, par exemple, un HashSet de statique où vous pouvez utiliser le typeName (this.GetType().Name) comme la clé.

Autres conseils

Si vous voulez une usine Singleton, vous pourriez envisager d'utiliser un conteneur IoC au lieu de rouler votre propre. De nombreux conteneurs IoC prennent en charge le comportement de l'usine Singleton comme une caractéristique standard. Par exemple, vous pouvez utiliser l'unité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top