Actuellement, dans le code, j'ai utilisé une fabrique d'objets pour me renvoyer un processeur basé sur une chaîne de caractères, qui a jusqu'à présent été dissocié.Objet fabrique qui crée des objets nécessitant des dépendances
using Core;
using Data;
public static class TagProcessorFactory
{
public static ITagProcessor GetProcessor(string tag)
{
switch (tag)
{
case "gps0":
return new GpsTagProcessor();
case "analog_manager":
return new AnalogManagerTagProcessor();
case "input_manager":
return new InputManagerTagProcessor();
case "j1939":
return new J1939TagProcessor(new MemcachedProvider(new[] { "localhost" }, "DigiGateway"), new PgnRepository());
default:
return new UnknownTagProcessor();
}
}
}
appelle le code
var processor = TagProcessorFactory.GetProcessor(tag.Name);
if (!(processor is UnknownTagProcessor))
{
var data = processor.Process(unitId, tag.Values);
Trace.WriteLine("Tag <{0}> processed. # of IO Items => {1}".FormatWith(tag.Name, data.Count()));
}
que vous pouvez voir l'un de mes articles a des dépendances et im essayant d'exécuter du code de test et je veux passer dans des dépôts simulés et les fournisseurs de cache, mais je peux sembler penser d'un moyen de le faire.
Est-ce une mauvaise conception ou quelqu'un a-t-il des idées pour le réparer pour rendre mon usine testable?
Merci
Y a-t-il une raison impérieuse pour laquelle vous avez décidé de ne pas utiliser l'un des nombreux, nombreux et gratuits et excellents conteneurs d'injection de dépendance disponibles pour C#? Chacun d'entre eux pourrait gérer ce modèle d'injection avec élégance. – anthony
je suis. J'utilise autofac, mon problème est que je ne voulais pas passer dans le constructeur/conteneur pour résoudre la dépendance, iv lire pour ne pas passer le conteneur. – Waterboy4800
Je dirais que le passage d'une usine est acceptable car la classe demande une création différée d'un objet. – aqwert