[英]C# Activator.CreateInstance Error
主 class....
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();
}
}
}
其他 class....
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");
}
}
}
這個簡單的程序在
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"}
請幫我解決這個錯誤..
Activator.CreateInstance(string, string)
並沒有您認為的那樣。
第一個參數是程序集名稱。 第二個參數是標准類型名稱。
因此,您應該具有:
string className = "ConsoleApplication1.Demo";
string assemblyName = "ConsoleApplication1";
var myObj = Activator.CreateInstance(assemblyName, className);
(假設它被編譯成一個名為ConsoleApplication1
的程序集。)
但是,如果能夠以其他方式獲取Assembly
的句柄,則可以使用Assembly.GetType(string)
然后使用Activator.CreateInstance(Type)
。
我找到了創建問題的解決方案。 您需要為所有 class 類型分配一個初始值,以便無參數構造函數可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.