【发布时间】:2021-03-04 13:39:31
【问题描述】:
我试图从 AssemblyQualifiedName 的程序集集合中查找匿名类型,但尽管匿名类型存在于扫描的程序集中,但未找到。 GetTypes() 似乎返回具有其他 AssemblyQualifiedNames 的类型。
为什么 AssemblyQualifiedNames 不同,我该怎么做才能在给定的程序集中找到正确的类型?
[Fact]
public void AnonTypes()
{
var entity = new { SomeString = "Asger" };
var type = entity.GetType();
var assemblyQualifiedName = type.AssemblyQualifiedName;
var types = type.Assembly.GetTypes()
.Where(x => x.AssemblyQualifiedName == assemblyQualifiedName)
.ToList();
types.Count.ShouldBe(1);
}
请注意,Type.GetType(assemblyQualifiedName) 会找到类型,但我不能使用此方法,因为我并不总是有 AssemblyQualifiedName,而是要搜索其他一些限定符。
还要注意,如果实体是 ValueTuple,也会发生同样的事情。
【问题讨论】:
标签: c# .net reflection system.reflection