using Microsoft.Practices.Unity;
public static void Main()
var container = new UnityContainer();
container.RegisterType<IMyInterface, ClassB>();
container.RegisterType<IMyInterface, ClassC>();
container.RegisterType<IMyInterface, ClassA>(new InjectionConstructor(new ResolvedParameter(typeof(ClassB))));
container.RegisterType<IMyInterface, ClassD>();
var classA = container.Resolve<ClassA>();
Console.WriteLine("Resolved to: "+classA);
var myInterface = container.Resolve<IMyInterface>();
Console.WriteLine("Resolved to: "+myInterface);
public interface IMyInterface
public class ClassA : IMyInterface
public ClassA(IMyInterface myInterface)
Console.WriteLine("Constructor of ClassA was injected with: "+myInterface);
public void PushToDatabase()
public class ClassB : IMyInterface
public void PushToDatabase()
public class ClassC : IMyInterface
public void PushToDatabase()
public class ClassD : IMyInterface
public void PushToDatabase()