未处理的异常:System.IO.FileLoadException:给定的程序集名称或代码库无效。 (来自HRESULT的异常:0x80131047)
我在一个简单的程序中从C#中得到一个例外,该程序包含两个类,即 Program.cs 和 AnotherClass.cs 。我想在 Program.cs 中使用静态AfterMap
方法,将CreateMap<Book, BookDto>()
.ForMember(d => d.Categories, opt => opt.MapFrom(s => s.BookCategories))
.ReverseMap()
.ForMember(d => d.BookCategories, opt => opt.MapFrom(s => s.Categories
.Select(c => new BookCategory { BookId = s.BookId, CategoryId = c.CategoryId })));
作为一个更复杂的程序的字符串提供给一个类。当我使用以下代码
Type.GetType
和一个空类,位于另一个文件中但名称空间相同
AnotherClass
我得到了错误。如何在该项目的另一个类上使用Type.GetType()?在不使用程序集的情况下,它给出了NullReferenceException。
相关问题
答案 0 :(得分:1)
让我们深入研究一下发生的反射并找出答案:
Console.WriteLine(a.FullName);
写
ProjectAssemblyName,版本= 1.0.0.0,文化=中性,PublicKeyToken =空
要弄清楚需要发送到Type.GetType()
的内容,我们可以吐出要获取的类型的FullName
:
Console.WriteLine(typeof(AnotherClass).FullName);
,并且应该输出类似的内容:
SmallTestingSimulator.AnotherClass
然后,您获取类型的调用就可以运行
var t = Type.GetType($"SmallTestingSimulator.AnotherClass");
在大多数情况下,这应该可行,除非您对名称空间/程序集做一些愚蠢的事情。