标签:UWP Assembly 技巧 GetType return TypeName 判断 AssemblyName supType
不要问我这个需求是怎么冒出来的,自己没事找事要支持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,Assembly,技巧,GetType,return,TypeName,判断,AssemblyName,supType 来源: https://www.cnblogs.com/wherewhere/p/15781449.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。