У меня здесь особая проблема.Я хочу извлечь некоторые универсальные типы, которые реализуют универсальный интерфейс из сборки.Я могу накапливать все типы из сборки, но не могу искать конкретный реализованный тип из этой коллекции типов.Вот мой код, который я использую, пожалуйста, укажите, что с ним не так?Или как мне достичь цели?
using System.Reflection;
using System;
using System.Collections.Generic;
namespace TypeTest
{
class Program
{
public static void Main(string[] args)
{
Test<int>();
Console.ReadKey(true);
}
static void Test<T>(){
var types = Assembly.GetExecutingAssembly().GetTypes();
// It prints Types found = 4
Console.WriteLine("Types found = {0}", types.Length);
var list = new List<Type>();
// Searching for types of type ITest<T>
foreach(var type in types){
if (type.Equals(typeof(ITest<>))) {
list.Add(type);
}
}
// Here it prints ITest type found = 1
// Why? It should prints 3 instead of 1,
// How to correct this?
Console.WriteLine("ITest type found = {0}", list.Count);
}
}
public interface ITest<T>
{
void DoSomething(T item);
}
public class Test1<T> : ITest<T>
{
public void DoSomething(T item)
{
Console.WriteLine("From Test1 {0}", item);
}
}
public class Test2<T> : ITest<T>
{
public void DoSomething(T item)
{
Console.WriteLine("From Test2 {0}", item);
}
}
}