/// <summary> /// Модульные тесты будут применять эту статическую версию /// </summary> /// <param name="target"></param> /// <param name="outgoingData"></param> public static void SerializeTheQuery(object target, Stream stream) { // получение запроса IQueryable query = target as IQueryable; if (query == null) { Error(stream, "Query visualizer invoked on non-IQueryable target."); return; } //получение сведений о поставщике Type tQueryImpl = query.GetType(); FieldInfo fiContext = tQueryImpl.GetField("context", BindingFlags.NonPublic | BindingFlags.Instance); if (fiContext == null) { Error(stream, "Query field 'context' not found in type " + tQueryImpl.ToString() + "."); return; } Object objProvider = fiContext.GetValue(query); if (objProvider == null) { Error(stream, "Query field 'context' returned null."); return; } System.Data.Linq.DataContext dataContext = objProvider as System.Data.Linq.DataContext; if (dataContext == null) { Error(stream, "Query is not against a DataContext."); return; } //вызов визуализатора для сериализации сведений о запросе Visualizer.StreamQueryInfo(dataContext, query, stream); }
/// <summary> /// 单元测试将使用此静态版本 /// </summary> /// <param name="target"></param> /// <param name="outgoingData"></param> public static void SerializeTheQuery(object target, Stream stream) { // 获取查询 IQueryable query = target as IQueryable; if (query == null) { Error(stream, "Query visualizer invoked on non-IQueryable target."); return; } //获取提供程序 Type tQueryImpl = query.GetType(); FieldInfo fiContext = tQueryImpl.GetField("context", BindingFlags.NonPublic | BindingFlags.Instance); if (fiContext == null) { Error(stream, "Query field 'context' not found in type " + tQueryImpl.ToString() + "."); return; } Object objProvider = fiContext.GetValue(query); if (objProvider == null) { Error(stream, "Query field 'context' returned null."); return; } System.Data.Linq.DataContext dataContext = objProvider as System.Data.Linq.DataContext; if (dataContext == null) { Error(stream, "Query is not against a DataContext."); return; } //调用可视化工具以序列化查询信息 Visualizer.StreamQueryInfo(dataContext, query, stream); }