winsdor зарегистрирует универсальный тип с помощью параметра конструктора - PullRequest
0 голосов
/ 28 августа 2009

у меня что-то подобное

 MyRepository<T> : IRepository<T> {

  public MyRepository(string cs){
   ....

}

так что мне нужно зарегистрироваться в винсдоре этот универсальный тип и дать ему параметр

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

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, который не был зарегистрирован.

Ответы [ 2 ]

3 голосов
/ 28 августа 2009

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

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

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

0 голосов
/ 15 октября 2018

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

var container = new WindsorContainer();


        container.Register(Component.For(typeof(ICustomGenericRepository<>))
        .ImplementedBy(typeof(CustomGenericRepository<>))
        .LifeStyle.Transient);
...