喜
我需要在'ResultColumns'中获取ColumnsNames,如上面的quickwatch图片所示。我无法在'query'中获取任何内容.bt可以通过如图所示的quickwatch访问它。如何访问它。请帮助。
此致 Jaison
答案 0 :(得分:3)
您的字段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#?