1
喜訪問,
我需要獲得ColumnsNames在「ResultColumns」,如圖快速監視above.I的形象,我不能夠裏面得到什麼'query'bt可以通過quickwatch訪問它,如圖所示。我可以如何訪問它。請幫助。
問候, Jaison
喜訪問,
我需要獲得ColumnsNames在「ResultColumns」,如圖快速監視above.I的形象,我不能夠裏面得到什麼'query'bt可以通過quickwatch訪問它,如圖所示。我可以如何訪問它。請幫助。
問候, Jaison
你的領域query
是私有的。這就是爲什麼你不能以「正常」的方式訪問它。
您仍然可以通過反思艱難訪問它。您可以使用下面的代碼來訪問私有字段:
/// <summary>
/// Uses reflection to get the field value from an object.
/// </summary> ///
/// <param name="type">The instance type.</param>
/// <param name="instance">The instance object.</param>
/// <param name="fieldName">The field's name which is to be fetched.</param>
/// <returns>The field value from the object.</returns>
internal static object GetInstanceField(Type type, object instance, string fieldName)
{
BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Static;
FieldInfo field = type.GetField(fieldName, bindFlags);
return field.GetValue(instance);
}
在你的情況,那麼你會這樣稱呼它:
Korzh.EasyQuery.Db.DbQuery query = GetInstanceField(typeof(Korzh.EasyQuery.Db.SqlQueryBuilder), builder, "query") as Korzh.EasyQuery.Db.DbQuery;
但是你應該只在絕對必要時才這樣做。由於某種原因,字段通常是私密的。繞過這個我的原因一些意想不到的行爲。
該函數的代碼是從以下的答案採取: How to get the value of private field in C#?
對不起什麼?我不明白你的問題 – RononDex
試圖訪問如上所示的builder.query,但它顯示相應的錯誤: 'Korzh.EasyQuery.Db.SqlQueryBuilder'不包含'查詢'nd無擴展方法'查詢的定義'接受'Korzh.EasyQuery.Db.SqlQueryBuilder'類型的第一個參數可以被發現(你是否缺少使用指令或程序集引用?) 但在quickwatch中沒有問題? –
正如您在快速查看實用程序中看到的那樣,「查詢」字段是私人的(您可以看到,因爲藍色立方體下方的小鎖)。這意味着您無法使用普通訪問器訪問它。你將不得不使用反射訪問私人領域 – RononDex