代码之家  ›  专栏  ›  技术社区  ›  Dan Cundy

没有从Microsoft到Microsoft的装箱转换或类型参数转换。WindowsAzure。存储桌子ITableEntity'

  •  2
  • Dan Cundy  · 技术社区  · 7 年前

    根据以下教程,我试图从Azure存储表中接收一些值。

    - https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet

    问题

    我收到如下所示的两个错误,我无法解决如何纠正它们。

    类型“AzureStorageTableEntites”不能用作类型参数 泛型类型或方法中的“TElement” 或类型参数从“AzureStorageTableEntites”转换为 'Microsoft。WindowsAzure。存储桌子ITableEntity’。

    无参数构造函数,以便将其用作参数“TElement” '云表。ExecuteQuery(TableQuery, TableRequestOptions,OperationContext)'

    错误表明调用方法的这一部分存在问题:

           // Print fields.
            foreach (AzureStorageTableEntities entity in table.ExecuteQuery<AzureStorageTableEntities>(query))
            {
               
            }
    

    table.ExecuteQuery<AzureStorageTableEntities>(query)
    

    密码

     public class AzureStorageTableEntities : TableEntity
        {
            public AzureStorageTableEntities() { }
    
            public bool MessageQueueToggle { get; set; }
            public bool DeadLetterQueueToggle { get; set; }
            public bool ServiceBusQueueToggle { get; set; }
            public bool MiJobsMessageAgeToggle { get; set; }
            public DateTime SpecificCheckTime { get; set; }
            public int HourlyCheckInternalToggle { get; set; }
            public bool ExceptionLogToggle { get; set; }
            public bool SpecificCheckTimeToggle { get; set; }
        }
    

    调用方法:

       private void GetStorageTableValues<AzureStorageTableEntities>()
        {
            // Retrieve the storage table name.
            var tableName = CloudConfigurationManager.GetSetting("AzureConfigTableName");
    
            // Retrieve the storage account from the connection string.
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
    
            // Create the table client.
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
    
            // Create the CloudTable object that represents the storage table.
            CloudTable table = tableClient.GetTableReference(tableName);
    
            TableQuery<AzureStorageTableEntities> query = new TableQuery<AzureStorageTableEntities>()
            .Where(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, "Key"));
    
            // Print fields.
            foreach (AzureStorageTableEntities entity in table.ExecuteQuery<AzureStorageTableEntities>(query))
            {
    
            }
        }
    
    2 回复  |  直到 3 年前
        1
  •  2
  •   Dan Cundy    7 年前

    问题是方法签名中的泛型类型。一旦我移除了这个,一切都如期进行。

    private void GetStorageTableValues<AzureStorageTableEntities>()
    

    更改为此。

    private void GetStorageTableValues()
    
        2
  •  1
  •   Dogu Arslan    7 年前

    AzureStorageTableEntities ITableEntity 通过其基类,具有无参数的向量,并且是非抽象的。如果你修正了拼写错误并使用该类,你应该很乐意去做。也可以使用ExecuteQuery的通用版本