a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

C#中使用反射獲取結(jié)構(gòu)體實例及思路

2020-01-24 03:07:42
字體:
供稿:網(wǎng)友

復制代碼 代碼如下:

static void Main(string[] args)
{
    Type type = typeof(MyObject);
    object obj = type.GetConstructor(Type.EmptyTypes).Invoke(null);
    Console.WriteLine(obj);
}

class MyObject
{

}


之前我一直沒有發(fā)現(xiàn)原來結(jié)構(gòu)是不可以這樣實例化的

換種方式,似乎結(jié)構(gòu)體使用反射無法得到其構(gòu)造函數(shù)ConstructorInfo對象

類中有一個隱式的構(gòu)造函數(shù),而結(jié)構(gòu)沒有構(gòu)造函數(shù)

我甚至嘗試查找非public構(gòu)造函數(shù)

依然沒有

這問題一度困擾我很久....解決的方法并不難,所以也沒當回事,但今天有個朋友又問到了這個問題,所以總結(jié)一下發(fā)出來,給同樣遇到這個問題的朋友

其實非常簡單,只要這樣就可以了

復制代碼 代碼如下:

static void Main(string[] args)
{
    Type type = typeof(MyStruct);
    object obj1 = type.Assembly.CreateInstance(type.FullName);
}

struct MyStruct
{

}


這個方法說明

Assembly.CreateInstance

使用區(qū)分大小寫的搜索,從此程序集中查找指定的類型,然后使用系統(tǒng)激活器創(chuàng)建它的實例。

使用這個方法就不用管class還是struct 都是可以用的,如果是class只要保證有無參構(gòu)造函數(shù)就可以了

這個方法不是什么高深的玩意兒,主要是給同樣碰到這個問題的同學說明一下

======================================================

感謝 KarasCanvas同學,原來C#還有Activator這么一個類

復制代碼 代碼如下:

Activator.CreateInstance(Type)

這樣就可以了

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 香蕉一区二区 | 久久免费福利视频 | 在线视频成人永久免费 | 成人影院av | 国产一区网站 | 欧美亚洲免费 | 精品视频一区二区 | 按摩高潮japanesevideo | 亚洲成人一区 | 国产亚洲精品久久久久久豆腐 | 日本va欧美va精品发布 | 在线欧美色 | 欧洲毛片| 亚洲精品不卡 | 成人免费视频播放 | www.夜夜操.com | 久久精品国产99国产 | 男人天堂视频在线观看 | 污网站大全 | 国产精品久久久久久亚洲调教 | 久久88 | 亚洲精品久久久 | 一区二区三区观看视频 | 成人亚洲 | 欧美精品国产精品 | 中文字幕一区二区三区精彩视频 | 日韩影院在线 | 久久9视频 | 久久精品这里热有精品 | 国产精品久久久久久久久福交 | 国产在线第一页 | 欧美成人激情视频 | 18毛片| 日韩精品无码一区二区三区 | 精品伦精品一区二区三区视频 | 国产精品一级毛片在线 | 久久精品综合 | 国产一区二区三区免费 | 久久夜夜 | a级网站在线观看 | 日韩精品免费在线 |