REMARQUE : Je réalise que cette question est similaire à ce fil SO, mais je parle d'un cas spécifique ici, donc merci de ne pas fermer cette question comme un doublon de celui-ci.
J'essaie de rendre mon C# plus fonctionnel, et j'ai lu le livre Programmation fonctionnelle en C# d'Enrico Buonanno. Une des techniques qu'il montre est une classe Try
, qui vous permet de gérer les exceptions de manière élégante. Vous pouvez voir le code de la classe Try
ici.
C'est très astucieux, mais dans une application réelle, je voudrais enregistrer les exceptions. Comme sa classe est statique, je ne vois pas comment le faire. Comme expliqué dans le fil SO lié ci-dessus (entre autres), l'injection dans une classe statique ne peut pas être faite ou ce n'est pas une bonne idée.
Les seules options que je vois sont :
-
Exiger du code consommateur de créer une instance de la classe
Try
(actuellement impossible avec son code), au lieu d'appeler la méthode statique. Cela rend le code beaucoup moins propre -
Ajouter une propriété statique
ILogger
à la classeTry
, et la définir avant d'utiliser la classe. Je ne veux pas le faire, car la classeTry
sera utilisée à la fois sur le client et sur le serveur dans mon application, et le logger serait différent dans les deux cas -
Ajouter un paramètre
ILogger
aux méthodes de la classe. Je n'aime pas ça pour les mêmes raisons que dans le cas 1. -
Accéder au résolveur de dépendances à l'intérieur de la classe
try
et obtenir une instance du logger. Cela signifierait que le code utilisantTry
se retrouverait également à enregistrer dans le fichier, ce qui n'est pas une bonne idée.
Des suggestions ? L'approche semble si propre et élégante, mais semble aussi manquer d'une fonction de base évidente.