给定的程序集名称无效 Type.GetType() 无效

The given assembly name was invalid Type.GetType() not working

Unhandled Exception: System.IO.FileLoadException: The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

我在一个由两个 classes,Program.cs[=36 组成的简单程序中收到 C# 的异常=]。我想在 Program.cs 中使用静态 Type.GetType 方法将 AnotherClass 作为 class 作为字符串给出复杂的程序。当我使用下面的代码时

class Program
{
    static void Main(string[] args)
    {
        Assembly a = Assembly.GetExecutingAssembly();
        //Console.WriteLine(a.FullName);
        Type t = Type.GetType($"SmallTestingSimulator.{a.FullName}.AnotherClass");
        Console.WriteLine(t.Name);
    }
}

和一个空 class 在不同的文件中但相同的命名空间

class AnotherClass {

}

我收到错误。我如何着手使用 Type.GetType() 用于此项目中的另一个 class?在不使用程序集的情况下,它会给出 NullReferenceException。

相关问题

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

让我们深入研究发生的反射并找出答案:

Console.WriteLine(a.FullName);

ProjectAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

为了弄清楚我们需要发送什么到 Type.GetType(),我们可以吐出我们试图获得的类型的 FullName

Console.WriteLine(typeof(AnotherClass).FullName);

这应该会输出如下内容:

SmallTestingSimulator.AnotherClass

那么,您获取类型的调用就可以 运行

var t = Type.GetType($"SmallTestingSimulator.AnotherClass");

这在大多数情况下应该有效,除非你用 namespaces/assemblies 做一些愚蠢的事情。