Given this simplified scenario:
public interface IRepository
{
string ConnectionString { get; set; }
}
public abstract class Repository : IRepository
{
public string ConnectionString { get; set; }
}
public class CustomerRepository : Repository, ICustomerRepository
{
}
public class OrderRepository : Repository, IOrderRepository
{
}
and the following Unity registrations:
IUnityContainer container = new UnityContainer();
container.RegisterType<ICustomerRepository, CustomerRepository>();
container.RegisterType<IOrderRepository, OrderRepository>();
What is the recommended way to intercept the creation of any IRepository instance in order to set the value for the ConnectionString property (and by extension any other property).
UPDATE 1: This post is not about design patters or an alternate solution involving re-factoring of the original classes. It's about Unity and the best way to set a property by intercepting the creation of instances implementing a given interface.