[英]Using reflection to get a properties property
我正在嘗試通過執行以下操作來獲取本地路徑的值:
Dim bar As WebProxy = WebProxy.GetDefaultProxy
Dim scriptEngine = bar.GetType().GetProperty("ScriptEngine", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
Dim acs As PropertyInfo = scriptEngine.PropertyType().GetProperty("AutomaticConfigurationScript", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
Dim localPath As PropertyInfo = acs.PropertyType().GetProperty("LocalPath", Reflection.BindingFlags.Public Or Reflection.BindingFlags.Instance)
Dim value As String = localPath.GetValue(acs, Nothing).ToString
我很確定這里的問題是我將PropertyInfo對象傳遞給localPath.GetValue,而不是實際的對象本身。 唯一的問題是我無法轉換結果
Dim acs As PropertyInfo = scriptEngine.PropertyType().GetProperty("AutomaticConfigurationScript", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
進入System.Uri AutomaticConfigurationScript並將其傳入,因此出現錯誤“對象與目標類型不匹配”。
有任何想法嗎?
PS我意識到這不是ac#問題,但不想限制我已將其標記為可能的答案,因為它是一個.Net問題,如果我收到C#的答案,我就可以翻譯。
您需要在每個步驟中獲取實際的對象,並使用它來獲取下一個屬性:
Dim bar As WebProxy = WebProxy.GetDefaultProxy
Dim scriptEngineProperty = bar.GetType().GetProperty("ScriptEngine", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
Dim scriptEngineObject as Object = scriptEngineProperty.GetValue(bar, Nothing)
Dim acsProperty As PropertyInfo = scriptEngineObject.GetType().GetProperty("AutomaticConfigurationScript", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Instance)
Dim acsObject as Object = acsProperty.GetValue(scriptEngineObject, Nothing)
Dim localPathProperty As PropertyInfo = acsObject.GetType().GetProperty("LocalPath", Reflection.BindingFlags.Public Or Reflection.BindingFlags.Instance)
Dim value As String = localPath.GetValue(acsObject, Nothing).ToString
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.