簡體   English   中英

C# Activator.CreateInstance 錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM