欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2013年10月09日 14:59:09   作者:  
一般用反射獲取類對(duì)象的實(shí)例比較簡(jiǎn)單,只要類有一個(gè)無參構(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)原來結(jié)構(gòu)是不可以這樣實(shí)例化的

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

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

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

依然沒有

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

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

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

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

struct MyStruct
{

}


這個(gè)方法說明

Assembly.CreateInstance

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

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

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

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

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

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

Activator.CreateInstance(Type)

這樣就可以了

相關(guān)文章

  • 一個(gè)狀態(tài)機(jī)的實(shí)現(xiàn)

    一個(gè)狀態(tài)機(jī)的實(shí)現(xiàn)

    本文主要介紹了C#實(shí)現(xiàn)一個(gè)狀態(tài)機(jī)的思路與方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • C#實(shí)現(xiàn)事件總線的方法示例

    C#實(shí)現(xiàn)事件總線的方法示例

    事件總線是一種用于在應(yīng)用程序內(nèi)部或跨應(yīng)用程序組件之間進(jìn)行事件通信的機(jī)制,本文主要介紹了C#實(shí)現(xiàn)事件總線的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • C#?使用PrintDocument類打印標(biāo)簽的方法

    C#?使用PrintDocument類打印標(biāo)簽的方法

    本文介紹打印機(jī)初步配置,以及實(shí)現(xiàn)方法,標(biāo)簽主要展示資產(chǎn)基本信息以及二維碼,對(duì)C#?使用PrintDocument類打印標(biāo)簽的詳細(xì)過程感興趣的朋友一起看看吧
    2022-04-04
  • c# 以二進(jìn)制讀取文本文件

    c# 以二進(jìn)制讀取文本文件

    在當(dāng)前目錄創(chuàng)建一個(gè)文件myfile.txt,對(duì)該文件具有讀寫權(quán)限
    2009-07-07
  • c#多線程之間的排他鎖的實(shí)現(xiàn)

    c#多線程之間的排他鎖的實(shí)現(xiàn)

    我們很多時(shí)候會(huì)碰到這樣的問題,使用多線程刷一個(gè)表的數(shù)據(jù)時(shí)需要多個(gè)線程不能重復(fù)提取數(shù)據(jù),那么這個(gè)時(shí)候就需要使用到線程的排他鎖了,本文就詳細(xì)的介紹一下
    2021-08-08
  • C#中時(shí)間的幾種格式轉(zhuǎn)換方法

    C#中時(shí)間的幾種格式轉(zhuǎn)換方法

    有時(shí)候我們要對(duì)C#時(shí)間進(jìn)行轉(zhuǎn)換,達(dá)到不同的顯示效果,這里簡(jiǎn)單介紹下,方便需要的朋友
    2013-09-09
  • Unity3D實(shí)現(xiàn)模型隨機(jī)切割

    Unity3D實(shí)現(xiàn)模型隨機(jī)切割

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)模型隨機(jī)切割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 關(guān)于C#中yield?return用法的思考

    關(guān)于C#中yield?return用法的思考

    在這篇文章中,我們將深入討論?C#?中yield?return的機(jī)制和用法,幫助您更好地理解這個(gè)強(qiáng)大的功能,并在實(shí)際開發(fā)中靈活使用它,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • 深入解析C#編程中struct所定義的結(jié)構(gòu)

    深入解析C#編程中struct所定義的結(jié)構(gòu)

    這篇文章主要介紹了C#編程中struct所定義的結(jié)構(gòu),與C++一樣,C#語(yǔ)言同時(shí)擁有類和結(jié)構(gòu),需要的朋友可以參考下
    2016-01-01
  • C#中委托用法實(shí)例分析

    C#中委托用法實(shí)例分析

    這篇文章主要介紹了C#中委托用法,較為詳細(xì)的分析了C#中委托的概念與相關(guān)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-05-05

最新評(píng)論