je suivant extrait:Unité: Spécifiez la dépendance nom lors de la configuration
static void Main(string[] args) {
var container = new UnityContainer();
container.RegisterType<IConnection, SerialPortConnection>("SerialConnection");
container.RegisterType<IConnection, ParallelPortConnection>("ParallelConnection");
container.RegisterType<Device>("ParallelDevice");
container.RegisterType<Device>("SerialDevice");
}
Je veux enregistrer le type Device
sous deux noms différents, de sorte que selon le nom demandé Device
instance serait initialisé avec Connection
approprié. Voici une façon de résoudre cela, juste pour la démonstration:
public class ParallelDevice : Device {
public ParallelDevice([Dependency("ParallelConnection")] IConnection connection) : base(connection) {}
}
public class SerialDevice : Device {
public SerialDevice([Dependency("ParallelConnection")] IConnection connection) : base(connection) {}
}
// and register with
container.RegisterType<Device, ParallelDevice>("ParallelDevice");
container.RegisterType<Device, SerialDevice>("SerialDevice");
Y a-t-il une meilleure façon de le faire? Quelque chose comme:
container.RegisterType<Device>("ParallelDevice").UseDependencyNames("ParallelConnection");