【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开发技巧――判断是否存在
C# winform程序判断是否管理员运行
C#判断类型是否可空
jquery判断checkbox是否选中
CSharp编程技巧-使用枚举 Enum.HasFlag 方法
.net中使用Linq 判断两个集合是否有交集的集合
.NETCore和.NET5 MVC 控制器中判断是否登录
.NETCore-winform 判断是否设计模式
C# .net WEB判断当前环境是否是调试
GZDBHelper中HasRow方法,执行SQL语句,判断是否有返回数据
WPF开发随笔收录-本地日志LogUtil
YESWEB POS开发库调试
微信支付提示 No_Auth 受理关系不存在
C#代码编码规范手册 软件开发规范 开发指南
YESWin Winform开发框架 代码生成器使用
12月日常开发小结
win11使用技巧之便捷调出你的任务管理器
win11使用技巧之任务栏靠左侧对齐
微信授权连接URL生成
AI聊天机器人总结,图灵、思知、爱、

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码