【UWP】开发小技巧――判断类是否存在
不要问我这个需求是怎么冒出来的,自己没事找事要支持 10240,结果发现啥都不支持,真是太糟糕了。
一般而言,这类需求都是想办法通过类名新建对象,一开始我也是这么想的,不过网上那些教程都是单纯 .NET 的,不支持 UWP (也可能是我太菜了,不会用),所以直接白嫖是不可能了。。。
不过判断是否存在不需要这么复杂,C# 有专门的 GetType 方法来找类,所以事情就简单了,直接 Type.GetType("类名") 就行了,不过真的是这样吗?
经过调试,并没有成功找到这个类型,不过不止 Type 有 GetType ,在 C# 中 Assembly 也有 GetType ,我直接找到要找的类的程序集再找类应该就能找到了吧。
很明显,这个方案才是对的。现在知道了方法,就搓个函数出来吧。
public static bool IsTypePresent(string AssemblyName, string TypeName) { try { Assembly asmb = Assembly.Load(new AssemblyName(AssemblyName)); Type supType = asmb.GetType($"{AssemblyName}.{TypeName}"); return supType != null; } catch { return false; } }
额,好像不太对,10240 不支持和类在不在程序集里好像没关系吧。。。
我们似乎还是要新建一个对象来判断它到底是不是支持,于是函数就变成这样了。。。
public static bool IsTypePresent(string AssemblyName, string TypeName) { try { Assembly asmb = Assembly.Load(new AssemblyName(AssemblyName)); Type supType = asmb.GetType($"{AssemblyName}.{TypeName}"); if (supType != null) { try { Activator.CreateInstance(supType); } catch (MissingMethodException) { } } return supType != null; } catch { return false; } }
终于正常了。。。
判断 API 是否存在就不要用这个方法了,官方有 ApiInformation,肯定比这个好用
本文来自博客园,作者:where-where,转载请注明原文链接:https://www.cnblogs.com/wherewhere/p/15781449.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇