首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出类型是否可实例化

找出类型是否可实例化
EN

Stack Overflow用户
提问于 2011-04-06 19:17:54
回答 2查看 4.4K关注 0票数 12

在C#中,如何找出是否可以被实例化?,我正在试图避免Activator.CreateInstance异常。

我目前的方法是type.IsClass && !type.IsInterface,但我担心这可能会在抽象类上失败,等等。我也考虑过检查type.TypeInitializer == null,但我也不确定这是否是万无一失的。

找出一个Type是否可实例化的最简单/最有效的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-06 19:29:32

还有很多其他的陷阱。它可以有一个私有或受保护的构造函数。或者它可能没有默认的构造函数,只有采用某些参数类型的构造函数。如果您必须担心这一点,那么当不应该使用Activator.CreateInstance()时,您肯定在使用它。任意构造对象只会造成破坏,你不知道它们可能会产生什么样的副作用。避免使用"FormatDisk“类。

一个例外是你的朋友,它告诉你你的假设是错误的。永远不要故意阻止.NET框架提供帮助。

票数 9
EN

Stack Overflow用户

发布于 2011-04-06 19:20:08

考虑一下IsAbstract。它将处理抽象类和静态类。您也可能希望查看IsInterface

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5571761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档