博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中使用反射获取结构体实例
阅读量:4502 次
发布时间:2019-06-08

本文共 959 字,大约阅读时间需要 3 分钟。

原文:

一般用反射获取类对象的实例比较简单,只要类有一个无参构造函数没有显示声明带参的构造函数即可使用如下代码

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

之前我一直没有发现原来结构是不可以这样实例化的

换种方式,似乎结构体使用反射无法得到其构造函数ConstructorInfo对象

类中有一个隐式的构造函数,而结构没有构造函数

我甚至尝试查找非public构造函数

依然没有

这问题一度困扰我很久....解决的方法并不难,所以也没当回事,但今天有个朋友又问到了这个问题,所以总结一下发出来,给同样遇到这个问题的朋友

其实非常简单,只要这样就可以了

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

这个方法说明

Assembly.CreateInstance

使用区分大小写的搜索,从此程序集中查找指定的类型,然后使用系统激活器创建它的实例。

使用这个方法就不用管class还是struct 都是可以用的,如果是class只要保证有无参构造函数就可以

 

这个方法不是什么高深的玩意儿,主要是给同样碰到这个问题的同学说明一下

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

感谢 同学,原来C#还有Activator这么一个类

 

Activator.CreateInstance(Type)

 

这样就可以了

 

 

 

 

posted on
2015-02-03 15:48 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/4270187.html

你可能感兴趣的文章
53.一个挺有意思的api(drag)
查看>>
Remoting异步回调,向在线用户广播消息
查看>>
python3---函数eval()
查看>>
RFID卡片的低功耗
查看>>
sqlserver2008R2 评估期已过
查看>>
js之数组操作
查看>>
Hive自定义UDAF
查看>>
【计算机视觉】双目测距(五)--匹配算法对比
查看>>
JAVA-环境部分
查看>>
Notes on <High Performance MySQL> -- Ch1: MySQL Architecture
查看>>
python基本数据类型
查看>>
理解MapReduce
查看>>
Vulkan的分层设计
查看>>
WCF 定义SOAP和REST风格的webservice
查看>>
关于display
查看>>
图片懒加载
查看>>
tomcat下jndi的三种配置方式
查看>>
JS moveStart和moveEnd方法(TextRange对象--查找与选择)
查看>>
textArea中的placeholder属性不起作用
查看>>
Swift 里字符串(一)概览
查看>>