找出type是否是可实例化的
本文关键字:实例化 是否是 type 找出 | 更新日期: 2023-09-27 17:49:32
在c#中,我如何才能发现Type
是否可以实例化?我正在尝试避免激活器。调用CreateInstance例外。
我目前的方法是type.IsClass && !type.IsInterface
,但我担心这可能会在抽象类等失败。我也考虑过检查type.TypeInitializer == null
,但我不确定这是否是万无一失的。
找出Type
是否可实例化的最简单/最有效的方法是什么?
考虑IsAbstract。它既可以处理抽象类,也可以处理静态类。你可能还想检查IsInterface
还有很多陷阱。它可以有一个私有的或受保护的构造函数。或者它可能没有默认构造函数,只有接受特定参数类型的构造函数。如果你不得不担心这一点,那么你肯定是在使用Activator.CreateInstance()时不应该使用它。只是随意地构造对象只会造成混乱,你不知道它们可能有什么样的副作用。避免使用"FormatDisk"类
异常是你的朋友,它告诉你你的假设是错误的。永远不要故意阻止。net框架的帮助。