Я исследую SimpleInjector, чтобы использовать его в моем проекте.Ниже приведен мой код, где я получаю исключение:
class Program
{
static void Main(string[] args)
{
var container = new Container();
//Case 1:
container.Collection.Register(typeof(IService<>), new[] { typeof(IService<>).Assembly });
//Case 2:
//container.Register<IService<int>, FirstService>();
var dbService = container.GetInstance<IService<int>>();
System.Console.WriteLine(dbService.Name);
System.Console.WriteLine(dbService.Value);
}
}
public interface IService<T>
{
string Name { get; }
T Value { get; }
}
public class FirstService : IService<int>
{
public int Value => 12343;
public string Name => "First Service";
}
Я получаю исключение в случае 1. Случай 2 работает хорошо.
Детали исключения:
НеобработанныеИсключение: SimpleInjector.ActivationException: не найдена регистрация для типа IDatabaseConnectionService.Однако есть регистрация для IEnumerable ;Вы хотели вызвать GetAllInstances () или зависеть от IEnumerable ?
at SimpleInjector.Container.ThrowMissingInstanceProducerException(Type serviceType)
at SimpleInjector.Container.GetInstanceForRootType[TService]()
at SimpleInjector.Container.GetInstance[TService]()
at NetCore.Console.ServiceProvider.Resolve[TService]() in C:\Users\pvha\source\repos\PracticeApp\NetCore.Console\ServiceProvider.cs:line 53
at NetCore.Console.Program.Main(String[] args) in C:\Users\pvha\source\repos\PracticeApp\NetCore.Console\Program.cs:line 8
У меня есть несколько интерфейсов, каждый из которых реализован одним классом.
Чтонаилучший способ зарегистрировать эти интерфейсы с их реализацией?