簡體   English   中英

C#根據類型創建類的實例

[英]C# Creating an instance of a class from type

我正在嘗試獲得此功能:

Class<?> c = Class.forName(dir.substring(6).replaceAll("/", ".") 
                       + file.getName().replaceAll(".java", ""));
Packet packet = (Packet)c.newInstance();

對於熟悉它的任何人,上面的代碼都是Java,它從目錄中獲取類,然后創建它的實例,這就是我在C#中試圖做的事情

我已經走了這么遠,現在我被困住了...

  foreach(Type t in assembly.GetTypes())
  {
        if (t.BaseType == typeof(Packet))
        {

基本上,我需要找到一種從Type構造類的方法,然后創建它的實例。

我試過使用激活器,如下所示:

foreach(Type t in assembly.GetTypes())
{
      if (t.BaseType == typeof(Packet))
      {
           string namespaceName = t.Namespace;
           string className = t.Name;
           var myObj = Activator.CreateInstance(namespaceName, className);

但我不知道如何引用它作為一個類而不是ObjectHandle

基本上,我需要找到一種從Type構造類的方法,然后創建它的實例。

Type 類(或結構等)。 獲得適當的Type ,可以使用各種選項對其進行實例化...例如, Activator.CreateInstance()或調用Type.GetConstructors() ,找到合適的構造函數然后調用它。

所有這些方法都返回object ,因此您需要強制轉換:

Packet packet = (Packet) Activator.CreateInstance(type);

似乎您正在尋找Activator.CreateInstance方法

var instance = Activator.CreateInstance(type);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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