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