找出type是否是可实例化的

本文关键字:实例化 是否是 type 找出 | 更新日期: 2023-09-27 17:49:32

在c#中,我如何才能发现Type是否可以实例化?我正在尝试避免激活器。调用CreateInstance例外。

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

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

找出type是否是可实例化的

考虑IsAbstract。它既可以处理抽象类,也可以处理静态类。你可能还想检查IsInterface

还有很多陷阱。它可以有一个私有的或受保护的构造函数。或者它可能没有默认构造函数,只有接受特定参数类型的构造函数。如果你不得不担心这一点,那么你肯定是在使用Activator.CreateInstance()时不应该使用它。只是随意地构造对象只会造成混乱,你不知道它们可能有什么样的副作用。避免使用"FormatDisk"类

异常是你的朋友,它告诉你你的假设是错误的。永远不要故意阻止。net框架的帮助。