C# 通过反射访问看似公共的财产

C# 通过反射访问看似公共的财产,c#,reflection,internal,propertyinfo,bindingflags,C#,Reflection,Internal,Propertyinfo,Bindingflags,大家好 我正在努力确定试图访问类上的公共属性会出现什么问题 我的需要是非常基本的。我有一个在例程中正确实例化的公共类,多亏了reflector,我知道这个类有一个我需要引用的属性 问题是,财产的定义如下: public Vector3 root { [MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get; [MethodImpl(MethodImplOptions.InternalCall), Wrap

大家好

我正在努力确定试图访问类上的公共属性会出现什么问题

我的需要是非常基本的。我有一个在例程中正确实例化的公共类,多亏了reflector,我知道这个类有一个我需要引用的属性

问题是,财产的定义如下:

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
}
Type vtype=myobj.getType()
房地产信息[]v房地产;
vproperties=vtype.GetProperties()//(BindingFlags.Default | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.NonPublic);
对于(int-vpropertycounter=0;vpropertycounterConsole.write(varbodyproperties[varpropertycounter].Name);带有
MethodImplOptions的方法。InternalCall
通常是内部框架方法。您不能直接或通过反射调用它们(这或多或少是一回事)

这取决于库,我在Word API中发现了类似的东西,它在内部使用VB。要访问变量属性,您必须调用setter方法

 Property = "" <- doesn't work
 set_Property("") <- works

Property=”“多亏了你的建议,我意识到我实际上可以调用setter和getter,这让我明白我在反射迭代中使用了错误的类型!