J'avais l'habitude de passer enregistreur de constructeur, comme:
public class OrderService : IOrderService {
public OrderService(ILogger logger) {
}
}
Mais c'est assez ennuyeux, j'ai donc utilisé une propriété pendant un certain temps:
private ILogger logger = NullLogger.Instance;
public ILogger Logger
{
get { return logger; }
set { logger = value; }
}
C'est plus ennuyeux trop - il n'est pas sec, j'ai besoin de répéter dans chaque classe. Je pourrais utiliser de la classe de base, mais encore une fois - je suis en utilisant le Formulaire de classe, donc, il faudrait FormBase, etc. Donc, je pense, ce serait inconvénient d'avoir singleton avec ILogger exposés, de sorte que toute personne serait de savoir où obtenir de l'enregistreur:
Infrastructure.Logger.Info("blabla");
Mise à JOUR: Comme Merlyn correctement remarqué, j'ai devriez le mentionner, que dans le premier et deuxième exemples que je suis à l'aide de DI.