无法使用 Name.EndsWith 的反射在 C# 中找到接口

Unable to find Interface in C# using reflection with Name.EndsWith

接口名称是 IService,但是当我试图在 C# 中通过反射查找接口时,它找不到,因为由于某种原因接口名称更改为 Iservice'1

请查看随附的 Ildasm 屏幕截图:

实际界面就像

 public interface IService<TOutput> 
        where TOutput : class, new()
    {
        Task<List<TOutput>> GetAllAsync(dynamic inputParameter);
    }

查找接口的代码: builder.RegisterAssemblyTypes(Assembly.Load("Services")) .Where(t => t.Name.EndsWith("Service"))

这里找不到服务,因为 IService 的名称与定义的名称不同。

知道为什么名称看起来像这样以及如何解决它吗?

IService 是泛型。换句话说,它是 IService<T>。编译为 MSIL 时,C# 泛型的名称已被修改,如您所见。

您可以使服务非通用,或使用 .Contains 而不是 .EndsWith