Unity using specific named registration for constructor argument

CSharp · Console

/Program.cs

using System;
using Microsoft.Practices.Unity;
					
public class Program
{
    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
{
    void PushToDatabase();
}

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()
    {
        //Actual insert on database
    }
}

public class ClassC : IMyInterface
{
    public void PushToDatabase()
    {
        //Actual insert on database
    }
}
public class ClassD : IMyInterface
{
    public void PushToDatabase()
    {
        //Actual insert on database
    }
}
;