Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 给定CloudTableQuery/DataServiceQuery,返回关联的TableServiceContext_C#_Azure_Wcf Data Services_Azure Table Storage - Fatal编程技术网

C# 给定CloudTableQuery/DataServiceQuery,返回关联的TableServiceContext

C# 给定CloudTableQuery/DataServiceQuery,返回关联的TableServiceContext,c#,azure,wcf-data-services,azure-table-storage,C#,Azure,Wcf Data Services,Azure Table Storage,给定CloudTableQuery和/或DataServiceQuery,是否可以获取生成查询的TableServiceContext。下面是一个扩展方法,它将为每个IQueryable(同时支持CloudTableQuery和DataServiceQuery)执行此操作: 使用系统; 使用System.Linq; 运用系统反思; 使用Microsoft.WindowsAzure.StorageClient; 公共静态类DataServiceQueryExtensions { 公共静态表Serv

给定
CloudTableQuery
和/或
DataServiceQuery
,是否可以获取生成查询的
TableServiceContext
。下面是一个扩展方法,它将为每个IQueryable(同时支持CloudTableQuery和DataServiceQuery)执行此操作:

使用系统;
使用System.Linq;
运用系统反思;
使用Microsoft.WindowsAzure.StorageClient;
公共静态类DataServiceQueryExtensions
{
公共静态表ServiceContext GetTableServiceContext(此IQueryable查询)
{
var contextField=query.Provider.GetType().GetField(“Context”,(BindingFlags.Instance | BindingFlags.NonPublic));
if(contextField==null)
返回null;
其他的
返回contextField.GetValue(query.Provider)作为TableServiceContext;
}
}
希望这有帮助


Sandrino

我将坚持寻找一种神奇的解决方案,它不需要通过反射使用私人成员,但否则我会将此标记为答案。
using System;
using System.Linq;
using System.Reflection;

using Microsoft.WindowsAzure.StorageClient;

public static class DataServiceQueryExtensions
{
    public static TableServiceContext GetTableServiceContext<TType>(this IQueryable<TType> query)
    {
        var contextField = query.Provider.GetType().GetField("Context", (BindingFlags.Instance | BindingFlags.NonPublic));
        if (contextField == null)
            return null;
        else
            return contextField.GetValue(query.Provider) as TableServiceContext;
    }
}