繁体   English   中英

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

[英]Accessing a seemingly public property through reflection

美好的一天,

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

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

问题是,属性定义如下:

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,我想,如果实现了这些后继者

除此之外,可以阅读平台调用教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM