я использую библиотеку EasyNetQ в своем проекте, и я хотел бы использовать Ninject в качестве контейнера IoC для компонентов EasyNetQ.
Я создал собственный регистратор, чтобы регистрировать что-либо из EasyNetQ:
public class LogNothingLogger : IEasyNetQLogger
{
...
}
А затем с помощью расширения Ninject в моей основной функции:
public class Program
{
static void Main(string[] args)
{
// Container creation and custom logger registration
IKernel cointainer = new StandardKernel();
cointainer.Bind<IEasyNetQLogger>().To<LogNothingLogger>();
// Register Ninject as IoC Container for EasyNetQ
cointainer.RegisterAsEasyNetQContainerFactory();
// Create bus
using (IBus bus = RabbitHutch.CreateBus("host=localhost"))
{
// Do something with bus...
}
}
}
Но я получаю следующее исключение:
Ninject.ActivationException was unhandled
More than one matching bindings are available.
Matching bindings:
1) binding from IEasyNetQLogger to LogNothingLogger
2) binding from IEasyNetQLogger to method
Activation path:
2) Injection of dependency IEasyNetQLogger into parameter logger of constructor of type RabbitBus
1) Request for RabbitBus
Suggestions:
1) Ensure that you have defined a binding for IEasyNetQLogger only once.
[...]
Я использую этот пакет неправильно? Есть ли решение?
Спасибо!