У меня есть 2 разных бетонных объекта, давайте сохраним ConcreteOne и ConcreteTwo.Каждый из них реализует интерфейс ILooseyGoosey.Я хотел бы, чтобы ninject вызывал другой метод в зависимости от атрибута этого метода.
Это то, что я имею до сих пор:
public class ConcreteOne : ILooseyGoosey
{
public void SomeMethod() { };
}
public class ConcreteTwo : ILooseyGoosey
{
public void SomeMethod() { } ;
}
public interface ILooseyGoosey
{
[CallConcreteTwo()]
void SomeMethod();
}
Это то, что я определил в своем модуле Ninject.:
public override void Load()
{
Bind<ILooseyGoosey>().To<ConcreteOne>().InjectMethodsWhere(mi => mi.GetCustomAttributes(true).Where(a => a.GetType() == typeof(CallConcreteTwoAttribute)).Count() == 0);
Bind<ILooseyGoosey>().To<ConcreteTwo>().InjectMethodsWhere(mi => mi.GetCustomAttributes(true).Where(a => a.GetType() == typeof(CallConcreteTwoAttribute)).Count() > 0);
}
Я получаю сообщение об ошибке:
System.NotSupportedException: Ошибка регистрации службы ILooseyGoosey: для службы объявлено несколько привязок по умолчанию.Найдено 2 привязки по умолчанию: