Question

J'ai une classe de journalisation qui obtient instancié au démarrage d'une application de la console et stockée dans une variable statique.

Si je veux une classe d'utiliser l'enregistreur doit-il être transmis à la classe dans le constructeur ou directement référencé?

Je suis en train d'écrire des tests unitaires et de toute façon je devrais être en mesure de le faire. Juste signifie que je dois définir la variable statique avant d'appeler le code qui l'utilise.

Vive.

Pas de solution correcte

Autres conseils

Sons comme ce que vous cherchez est une sorte de conteneur IoC . Vous pouvez utiliser Unité de EntLib ou autre chose comme ça.

Pour faire vos classes en tant testable que possible, toutes les dépendances, y compris les enregistreurs, devraient être passés dans la mesure du possible. C'est ce qu'on appelle injection de dépendance (DI), et est un modèle très commun et standard pour unité d'écriture d'un code testable. L'exploitation forestière est presque toujours une préoccupation transversale qui n'incorporé dans les corps des méthodes, car il n'y a pas vraiment de cadres AOP décent pour tirer correctement ces préoccupations et de les appliquer de manière déclarative. Le fait de devoir faire face à l'exploitation forestière lors de l'écriture / exécution des tests unitaires augmente simplement la complexité des tests, en ajoutant éventuellement des problèmes de configuration supplémentaires, lorsque vous voulez vraiment garder vos tests aussi simple et ciblée que possible.

Que diriez-vous en utilisant Motif Passerelle statique?

Vous pouvez créer une instance de et stocker cette instance en tant que membre de la même classe et retour que via une propriété.

par exemple. Logger.Default
Ceci renvoie la référence à l'instance qui a été créé.

EDIT: Un exemple de cela pourrait être la classe Console et c'est la méthode SETOUT. Je veux dire que vous pouvez continuer à utiliser Console.WriteLine .... et si vous voulez changer le cours d'eau, utilisez la méthode SETOUT. Il redirige la sortie vers un nouveau flux.

L'espoir qui aide.

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