c# – 通过反思访问看似公共的财产
发布时间:2020-12-15 21:56:40 所属栏目:百科 来源:网络整理
导读:美好的一天, 我正在努力确定尝试访问类上的公共属性的问题. 我的需要非常基本.我有一个在我的例程中正确实例化的公共类,我知道,由于反射器,这个类有一个我需要引用的属性. 问题是,属性定义如下: public Vector3 root { [MethodImpl(MethodImplOptions.Inter
美好的一天,
我正在努力确定尝试访问类上的公共属性的问题. 我的需要非常基本.我有一个在我的例程中正确实例化的公共类,我知道,由于反射器,这个类有一个我需要引用的属性. 问题是,属性定义如下: public Vector3 root { [MethodImpl(MethodImplOptions.InternalCall),WrapperlessIcall] get; [MethodImpl(MethodImplOptions.InternalCall),WrapperlessIcall] set; } 我面临的问题是我获得财产的所有尝试都失败了. Type vtype = myobj.getType() PropertyInfo[] vproperties; vproperties = vtype.GetProperties();//(BindingFlags.Default | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.NonPublic); for (int vpropertycounter =0 ; vpropertycounter < vproperties.Length ; vpropertycounter++) { Console.write( varbodyproperties[varpropertycounter].Name); <= 'root' never appears in this list } 我的怀疑和怀疑围绕着这样一个事实:root属性可能不是’visibile’,因为它的getter和setter是’wrapperless’和’internal’. 我想知道是否可以通过各种方式访问??此属性,以及可能的方法. 欢迎所有反馈. 提前致谢. 注意:直接寻址属性,如“myobj.root”为未知属性生成编译器错误. 解决方法
MethodImplOptions.InternalCall的方法通常是内部框架方法.你不能直接或通过反射(这或多或少是相同的东西)来调用它们.
这取决于库,我在内部使用VB的Word API中找到了这样的东西.要访问变体属性,您必须调用setter方法 Property = "" <- doesn't work set_Property("") <- works 取决于您尝试访问的API,我想,如果实现了这些后继者 除此之外,也许阅读Platform Invoke Tutorial (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |