0

接口的名称是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 有一些不同的名称,然后定义了一个。

任何想法为什么名称看起来像这样以及如何解决它?

4

1 回答 1

2

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

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

于 2016-07-21T01:01:02.743 回答