Получить список типа (ов) указанного интерфейса c, реализованного конкретным классом - PullRequest
1 голос
/ 19 апреля 2020

Учитывая класс, как я могу найти типы для INotificationHandler <>:

public class OtherClass : INotificationHandler<Aggregate>, INotificationHandler<Quote>
{
  /* */
}

var typesList = [] { typeof(OtherClass) };

var result = MagicFunctionToGetTemplateTypesForNotificationHandlerInterface(typesList)

// where result = [] { typeof(Aggregate), typeof(Quote) };

Я подумываю пойти по дороге GetType().GenericTypeArguments[0], но хочу сначала проверить, есть ли более безопасный путь .

Я попытался найти и оценил, что это вполне может быть дубликат, если так, пожалуйста, дайте мне знать, и я удалю.

1 Ответ

1 голос
/ 19 апреля 2020

Вы можете попробовать что-то вроде этого:

var result = typeof(OtherClass).GetInterfaces()
    .Where(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(INotificationHandler<>))
    .Select(x => x.GetGenericArguments()[0])
    .ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...