最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年10月09日 14:59:09   作者:  
一般用反射獲取類對(duì)象的實(shí)例比較簡(jiǎn)單,只要類有一個(gè)無(wú)參構(gòu)造函數(shù)或沒有顯示聲明帶參的構(gòu)造函數(shù)即可使用

復(fù)制代碼 代碼如下:

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)原來(lái)結(jié)構(gòu)是不可以這樣實(shí)例化的

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

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

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

依然沒有

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

其實(shí)非常簡(jiǎn)單,只要這樣就可以了

復(fù)制代碼 代碼如下:

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

struct MyStruct
{

}


這個(gè)方法說(shuō)明

Assembly.CreateInstance

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

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

這個(gè)方法不是什么高深的玩意兒,主要是給同樣碰到這個(gè)問(wèn)題的同學(xué)說(shuō)明一下

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

感謝 KarasCanvas同學(xué),原來(lái)C#還有Activator這么一個(gè)類

復(fù)制代碼 代碼如下:

Activator.CreateInstance(Type)

這樣就可以了

相關(guān)文章

最新評(píng)論

望谟县| 吐鲁番市| 山阴县| 恩平市| 南康市| 安国市| 绵竹市| 固始县| 曲靖市| 乌什县| 甘泉县| 奇台县| 武邑县| 壤塘县| 偏关县| 浮梁县| 崇明县| 东光县| 永寿县| 瑞安市| 玉溪市| 瑞丽市| 武宁县| 拜泉县| 柘城县| 邵阳市| 和硕县| 崇阳县| 五大连池市| 屏边| 香港 | 新干县| 杨浦区| 孙吴县| 南宁市| 余干县| 思茅市| 德江县| 宁德市| 万年县| 天门市|