У меня есть простой вопрос (надеюсь), на который я нигде не могу найти ответ. Я хочу реализовать обобщенный c (немного сложный) сервис. Репозиторий Github: https://github.com/arnoldsimha/genericRepo-issue Это мой шаблон c Интерфейс:
public interface IContactsService<T> where T : Contact
{
Task<T> GetContact(string email);
}
Это контакт:
public class Contact
{
public string Name { get; set; }
public string Email { get; set; }
}
Теперь я создал Новый Сервис, который должен реализовать этот интерфейс. Я продлил контакт:
public class AppContact : Contact
{
public string Id { get; set; }
}
И сервис:
public class MyNewContactService<T> : IContactsService<AppContact>
{
public async Task<AppContact> GetContact(string email)
{
}
}
Вот как я его регистрирую:
services.AddScoped<IContactsService<AppContact>, MyNewContactService<AppContact>>();
Пока все хорошо. Я создал другой сервис, который реализует тот же интерфейс. Могу я спросить, почему, когда я пытаюсь привести MyNewContactService в качестве IContactsService, я получаю нулевое значение?
myNewContactService as IContactsService<AppContact>
Я пытаюсь добавить опцию для выбора реализации в соответствии с указанным c условием.
Спасибо