给定的程序集名称无效Type.GetType()不起作用

时间:2019-07-24 02:26:29

标签: c# .net-assembly

  

未处理的异常: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。

相关问题

Type.GetType("namespace.a.b.ClassName") returns null

1 个答案:

答案 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");

在大多数情况下,这应该可行,除非您对名称空间/程序集做一些愚蠢的事情。