Иногда я хочу узнать список всех стандартных типов .NET, которые реализуют определенный интерфейс.Обычно это из любопытства, иногда есть и некоторая практическая цель (но это не главное).
Я пытался извлечь это из MSDN, но страница типа содержит только ссылки дочерних типов типов, а не реализации типовинтерфейс.
Вы знаете какой-нибудь трюк, как это сделать (или инструмент, который помог бы)?
Я написал этот код (ICollection
- это тип, который исследуется):
var result =
from assembly in AppDomain.CurrentDomain.GetAssemblies().ToList()
from type in assembly.GetTypes()
where typeof(ICollection).IsAssignableFrom(type)
select type;
foreach (var type in result)
{
Console.Out.WriteLine(type.FullName);
}
Но у этого есть некоторые ограничения:
- Он ищет только загруженные в данный момент сборки.
- Я не мог найти способ сделать это для универсальных интерфейсов (
ICollection<>
не будет работать). - Было бы неплохо, если бы он предоставил ссылки на MSDN (но я думаю, что это можно исправить).
Спасибо за помощь!