winsdor регистрирует универсальный тип с параметром конструктора

у меня что-то вроде этого

 MyRepository<T> : IRepository<T> {

  public MyRepository(string cs){
   ....

}

поэтому мне нужно зарегистрировать в winsdor этот общий тип и дать ему параметр

я пытался сделать это так:

Type t = typeof(IRepository<>);
Type t1 = typeof(Repository<>);
Hashtable props = new Hashtable(); 
props.Add("cs", "myconnstring");
container.AddComponentWithProperties("key1", t, t1, props);

и я получаю следующую ошибку

Невозможно создать компонент "key1", так как он требует удовлетворения зависимостей. key1 ожидает следующих зависимостей:

Ключи (компоненты с определенными ключами) - cs, который не был зарегистрирован.


person Omu    schedule 28.08.2009    source источник


Ответы (2)


Попробуй это:

container.Register(Component.For(typeof(IRepository<>))
   .ImplementedBy(typeof(MyRepository<>))
   .Parameters(Parameter.ForKey("cs").Eq("myconnstring"));

Посетите вики о свободной регистрации для получения дополнительной информации.

person Mauricio Scheffer    schedule 28.08.2009
comment
Спасибо, чувак, все сработало, я просто поместил значение cs в Eq(value) - person Omu; 01.09.2009

Вы можете использовать это

var container = new WindsorContainer();


        container.Register(Component.For(typeof(ICustomGenericRepository<>))
        .ImplementedBy(typeof(CustomGenericRepository<>))
        .LifeStyle.Transient);
person Abdus Salam Azad    schedule 15.10.2018