using Microsoft.Practices.Unity;
public static void Main()
IUnityContainer container = new UnityContainer();
container.RegisterType<IEntityManager, EntityManager>();
container.RegisterType<ICustomer, Customer>();
container.RegisterType<IAddress, Address>();
container.RegisterType<IDBContext, DBContext>(new PerResolveLifetimeManager());
IEntityManager em0 = container.Resolve<IEntityManager>();
IEntityManager em1 = container.Resolve<IEntityManager>();
Console.WriteLine("DBContextinstance" + em0.address.context.instNumbr.ToString());
Console.WriteLine("DBContextinstance" + em0.customer.context.instNumbr);
Console.WriteLine("DBContextinstance" + em1.address.context.instNumbr);
Console.WriteLine("DBContextinstance" + em1.customer.context.instNumbr);
public interface IEntityManager{
public class EntityManager : IEntityManager
public EntityManager(ICustomer customer, IAddress address)
public ICustomer customer
public interface ICustomer{
public class Customer : ICustomer
public Customer(IDBContext context)
public IDBContext context
public interface IAddress{
public class Address : IAddress
public Address(IDBContext context)
public IDBContext context
public interface IDBContext{
public class DBContext : IDBContext
private static int contextInstanceNumber = 0;
contextInstanceNumber = contextInstanceNumber+1;
number = contextInstanceNumber;