Учитывая этот упрощенный сценарий:
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
{
}
и следующие регистрации Unity:
IUnityContainer container = new UnityContainer();
container.RegisterType<ICustomerRepository, CustomerRepository>();
container.RegisterType<IOrderRepository, OrderRepository>();
Каков рекомендуемый способ перехватить создание любого экземпляра IRepository для установки значения для свойства ConnectionString (и, соответственно, для любого другого свойства).
ОБНОВЛЕНИЕ 1: Этот пост не о шаблонных шаблонах или альтернативном решении, включающем перефакторинг исходных классов. Это Unity и лучший способ установить свойство, перехватывая создание экземпляров, реализующих данный интерфейс.