KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am finally getting my feet wet with Dependency Injection (long overdue); I got started playing with Unity and run into an issue with the strategy pattern. I can use the container to return to me specific implementations of a strategy based on a name, but what I don't see is how I am supposed to get the right strategy in the context. Let's illustrate on a simple example: the context is a car, which has an IEngine (the strategy), with 2 implementations, FastEngine and SlowEngine. The code would look along these lines: public interface IEngine { double MaxSpeed { get; } } internal class FastEngine:IEngine { public double MaxSpeed { get { return 100d; } } } internal class SlowEngine:IEngine { public double MaxSpeed { get { return 10d; } } } public class Car { private IEngine engine; public double MaximumSpeed { get { return this.engine.MaxSpeed; } } public Car(IEngine engine) { this.engine = engine; } } My problem is the following: how should I go about instantiating a fast car or a slow car? I can use the container to provide me with each implementation, and I can set a "default" implementation to use: IUnityContainer container = new UnityContainer(); container.RegisterType<IEngine, FastEngine>(); container.RegisterType<IEngine, FastEngine>("Fast"); container.RegisterType<IEngine, SlowEngine>( "Slow" ); var car = container.Resolve<Car>(); Assert.AreEqual(100, car.MaximumSpeed); but what I would like is to be able to request a car with a specific implementation of the strategy - something like var car = container.Resolve<Car>(??? use "Fast" or "Slow ???); Can I use the container to do that? Or should I write a Factory which uses the conta
Tags (comma-separated)
Save Edits
Cancel