通过使用Microsoft的Unity,我能够在我解析实例的确切时刻覆盖依赖关系,例如:
var valueObjectThatOverridesAnyConfiguration = new object();
var container = new UnityContainer();
container.Resolve<ATypeWithConstructorArguments>(new DependencyOverride(typeof(object), valueObjectThatOverridesAnyPreviousConfiguration);
这将覆盖我的UnityContainer上的任何先前配置,并注入我在DependencyOverride上提供的实例。
有没有办法在Container级别指定它?像扩展或什么?我不想在决定时刻这样做!
谢谢!如果我对你感到困惑,请告诉我,我会提供更多信息。
答案 0 :(得分:4)
你的意思是this。听起来像你的问题的部分开始在线程的中间。
它允许你这样做
var container = new UnityContainer();
container.AddNewExtension<SemanticGroupExtension>();
container.RegisterGroup<IVehicle, Car>("Car").Use<IWheel, CarWheel>().Use<IEngine, CarEngine>();
container.RegisterGroup<IVehicle, Motorcycle>("Motorcycle").Use<IWheel, MotorcycleWheel>().Use<IEngine, MotorcycleEngine>();
var car = container.Resolve<IVehicle>("Car");
Assert.IsInstanceOfType(car.Wheel, typeof(CarWheel));
Assert.IsInstanceOfType(car.Engine, typeof(CarEngine));
var motorcycle = container.Resolve<IVehicle>("Motorcycle");
Assert.IsInstanceOfType(motorcycle.Wheel, typeof(MotorcycleWheel));
Assert.IsInstanceOfType(motorcycle.Engine, typeof(MotorcycleEngine));
可以在 TecX.Unity 项目中找到here来源。