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

Posted where-where

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,肯定比这个好用

 

以上是关于UWP开发小技巧――判断类是否存在的主要内容,如果未能解决你的问题,请参考以下文章

UWP开发入门(二十三)——WebView

小技巧_01

小技巧_01

Python小技巧:判断输入是否为汉字/英文/数字

几个jdbc小技巧

Qt技巧:sqlite数据库 判断表是否存在