开发者

Find out if type is instantiable

开发者 https://www.devze.com 2023-02-22 19:12 出处:网络
In C#, how can I find out if a Type can be instantiated?I am 开发者_运维问答trying to avoid an Activator.CreateInstance exception.

In C#, how can I find out if a Type can be instantiated? I am 开发者_运维问答trying to avoid an Activator.CreateInstance exception.

My current method is type.IsClass && !type.IsInterface, but I am worried this could fail on abstract classes, etc. I also considered checking type.TypeInitializer == null, but I am not sure if that is foolproof either.

What is the simplest/most efficient way possible to find out if a Type is instantiable?


Consider IsAbstract . It would handle abstract as well as static class. You may also want to check on IsInterface


There are many other traps. It could have a constructor that is private or protected. Or it might not have a default constructor, only constructors that take certain argument types. If you have to worry about that then you are surely using Activator.CreateInstance() when it should not be used. Just arbitrarily constructing objects can only create havoc, you have no idea what kind of side effects they may have. Avoid the "FormatDisk" class.

An exception is your friend, it tells you that your assumptions were wrong. Never intentionally stop the .NET framework from being helpful.

0

精彩评论

暂无评论...
验证码 换一张
取 消