簡體   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