c# – 通过反思访问看似公共的财产

c# – 通过反思访问看似公共的财产,第1张

概述美好的一天, 我正在努力确定尝试访问类上的公共属性的问题. 我的需要非常基本.我有一个在我的例程中正确实例化的公共类,我知道,由于反射器,这个类有一个我需要引用的属性. 问题是,属性定义如下: public Vector3 root { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; [Meth 美好的一天,

我正在努力确定尝试访问类上的公共属性的问题.

我的需要非常基本.我有一个在我的例程中正确实例化的公共类,我知道,由于反射器,这个类有一个我需要引用的属性.

问题是,属性定义如下:

public Vector3 root {    [MethodImpl(MethodImplOptions.InternalCall),WrapperlessIcall] get;    [MethodImpl(MethodImplOptions.InternalCall),WrapperlessIcall] set;}

我面临的问题是我获得财产的所有尝试都失败了.
我已经实例化了Type,并尝试了所有可能的绑定标志组合

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

总结

以上是内存溢出为你收集整理的c# – 通过反思访问看似公共的财产全部内容,希望文章能够帮你解决c# – 通过反思访问看似公共的财产所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

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

原文地址: http://outofmemory.cn/langs/1230237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存