主班..
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1{
class Program{
static void Main(string[] args){
string className = "Demo";
string namespaceName = "ConsoleApplication1";
var myObj = Activator.CreateInstance(namespaceName, className);
Console.Read();
}
}
}
Run Code Online (Sandbox Code Playgroud)
其他课....
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1{
class Demo{
public void printClassName() {
Console.WriteLine("Demo");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个简单的程序在运行时出现错误
var myObj = Activator.CreateInstance(namespaceName, className); 线。
System.TypeLoadException {"Could not load type 'Demo' from assembly 'ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.":"Demo"}
Run Code Online (Sandbox Code Playgroud)
请帮助我解决此错误!
Activator.CreateInstance(string, string) 不按照您的想法去做。
第一个参数是程序集名称。第二个参数是标准类型名称。
因此,您应该具有:
string className = "ConsoleApplication1.Demo";
string assemblyName = "ConsoleApplication1";
var myObj = Activator.CreateInstance(assemblyName, className);
Run Code Online (Sandbox Code Playgroud)
(假设它被编译成一个名为ConsoleApplication1当然的程序集。)
但是,如果您能够以Assembly其他方式处理,则可以使用Assembly.GetType(string),然后再使用Activator.CreateInstance(Type)。