无法使用 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
。
接口名称是 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
。