运行时的C#struct instantiation

时间:2010-09-20 12:36:27

标签: c# reflection struct

有人能举例说明如何在运行时创建结构实例吗?我正在使用的结构没有定义任何构造函数,只是字段。 GetConstructor()方法返回null,到目前为止我无法找到实现此目的的方法。

2 个答案:

答案 0 :(得分:6)

只需使用Activator.CreateInstance(Type)

大多数结构实际上没有无参数构造函数 - 使用了不同形式的IL(initobj指令IIRC)。

另一方面,如果一个结构体没有任何构造函数,那表明它不是非常有用或者它是可变的 - 并且可变结构可能导致各种问题。如果您自己控制结构代码,我建议给它一个构造函数并使其不可变。有些情况下,可变结构是必要的邪恶(特别是在互操作之外),但如果可能的话,它们是值得避免的。

答案 1 :(得分:5)

您是否尝试过使用:

Object o = Activator.CreateInstance(Type t);

......或其他一些重载?

http://msdn.microsoft.com/en-us/library/system.activator.createinstance%28v=VS.100%29.aspx

相关问题