【UWP】开发小技巧――判断类是否存在


不要问我这个需求是怎么冒出来的,自己没事找事要支持10240,结果发现啥都不支持,真是太糟糕了。
一般而言,这类需求都是想办法通过类名新建对象,一开始我也是这么想的,不过网上那些教程都是单纯.NET的,不支持UWP(也可能是我太菜了,不会用),所以直接白嫖是不可能了。。。

不过判断是否存在不需要这么复杂,CS有专门的GetType方法来找类,所以事情就简单了,直接Type.GetType(“类名”)就行了,不过真的是这样吗?

经过调试,并没有成功找到这个类型,不过不止Type有GetType,在CS中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,肯定比这个好用

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:详解ElasticAPM实现微服务的链路追踪(NET)
下一篇:Elasticsearch使用系列-ES简介和环境搭建
评论列表

发表评论

评论内容
昵称:
验证码:
验证码
关联文章

UWP开发技巧――判断是否存在
CSharp编程技巧-使用枚举 Enum.HasFlag 方法
C# winform程序判断是否管理员运行
C#判断类型是否可空
jquery判断checkbox是否选中
.net中使用Linq 判断两个集合是否有交集的集合
.NETCore和.NET5 MVC 控制器中判断是否登录
.NETCore-winform 判断是否设计模式
C# .net WEB判断当前环境是否是调试
Epicor判断当前是否正在进行MRP运算
判断一个DataView是否修改过
GZDBHelper中HasRow方法,执行SQL语句,判断是否有返回数据
前台页面自定义权限值判断
WPF开发随笔收录-本地日志LogUtil
YESWEB POS开发库调试
VS ClickOnce发布的时候,版本号有更新,但是就是提示“已发布版本在服务器上已存在是否覆盖它?”
微信支付提示 No_Auth 受理关系不存在
C#代码编码规范手册 软件开发规范 开发指南
YESWin Winform开发框架 代码生成器使用
12月日常开发小结

热门标签
.NET Core .NET Reactor ag-grid AI发布 api安全 ASP.NET Core C#DLL加密 C#播放声音 C#代码混淆 C#代码加密 ChromeDriver Codex DateTime DBeaver devexpress devTool DLL混淆 edge.js EF EFCore Electron element-ui el-form el-table excel FastReport FileStream FolderBrowerDialog FolderSelectDialog form提交 git gridcontrol gridview input javascript json字符串 JS转换对象JSON jwt JWT授权 linq log Math MCP mitmproxy MVC MySQL Navicat netstat nginx node_modules NSwag Nuget Nuget镜像 number PowerShell pyinstaller python pythoncom python爬虫 python抓包 pywin32 redis Requests-html RestSharp Selenium sql SQL Server Swagger to-cms Visual Studio VSCode vue VueRouter vue路由 VUE页面通讯 Webpack Windows Windows服务 winform wmi xlrd yaml YESCMS YESWEB开发框架 白象 表单提交 播放声音 打开URL 代码混淆 弹窗提醒 端口占用 对象转换 分布式 公共字典 机器码 进程排查 静态资源 开发指南 路由参数 密钥 配置教程 配置文件 权限 人工智能 任务 任务调度 日期间隔 日志 日志记录 省市区 授权验证 数据库 四舍五入 文案 文件读取 文件夹选择 文件目录选择 问题排查 行政区域数据 页面通讯 中间件 CSharp 事务锁 工单系统 并发控制 重复提交 CMS Markdig Markdown markdown-it marked 技术选型 VS Code 开发工具 源代码管理 版本控制 Docker PostgreSQL 时区 部署排查 CMS架构 EF Core 主题系统 二次开发 插件系统 容器 运维命令 镜像清理 Linux NAS 远程挂载 飞牛 fnOS
联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码