Tracing instanciation dans une classe de base
-
16-10-2019 - |
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?
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é.