OBJC的反射,怎么在父类里就能取到子类实例的类名

OBJC的反射,怎么在父类里就能取到子类实例的类名,第1张

可以,有 class_copyMethodList 和 class_copyPropertyList

详细的看这里吧

>

请注意看异常信息。未能从“当前”程序集获取“外部”程序集中拥有指定完整限定名的类型

事实上,直接使用TypeGetType()会从当前程序集,也就是"test3"程序集中查找。

想要查找NHapiModelV23程序集中的类型,请在该程序集上使用GetType

Assembly asmNHapi=AssemblyLoadFrom();

Type outerType=asmNHapiGetType();

如果想尽量少的改动自己的代码也成,直接在你的var classes上进行linq查询就好。

Type[] classes=AssemblyLoadFrom()GetTypes();

Type tt=classesFirstOrDefault(t=>tFullName="NHapiModelV23GroupORM_001_"+properties[i]);

if(tt!=null)

    DoSomething();

最后提醒,请勿使用AssemblyLoad方法,因为该方法已被弃用,请使用LoadFrom和LoadFile来加载外部程序集。

此外,类型的完全限定名和短名并不影响类型的搜索。使用GetType时会从根命名空间开始一层一层查找的,如果各层命名空间下没有重名的类,你甚至没有使用完全限定名的必要。比如上面的代码里可以使用短名进行查找。

Type tt=classesFirstOrDefault(t=>tName="ORM_001_"+properties[i]);

刚看到上面的回答,这里我要肯定的告诉你,不管你是用文件方式还是项目引用方式,都不可能使用TypeGetType静态方法获取另一个程序集中的类型,必须在对方的程序集上进行查找!

如果你非要使用TypeGetType静态方法获取其他程序集中的类型,可以使用其的一种重载:

public static SystemType GetType(string typeName, SystemFunc<AssemblyName,Assembly> assemblyResolver, SystemFunc<Assembly,string,bool,Type> typeResolver)

该静态方法要求你提供自己的程序集名称解析器和类型名称解析器,非特殊情况不推荐使用。该方法是为了在多个程序集中同时查找多个类型而被微软提供的。

以上就是关于OBJC的反射,怎么在父类里就能取到子类实例的类名全部的内容,包括:OBJC的反射,怎么在父类里就能取到子类实例的类名、如何用Java反射取得一个对象里所有get方法的结果、C#通过反射获取不同命名空间下的类(属性和方法)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9318984.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存