gpt4 book ai didi

c# - 如何在 c# .NET 的方法中参数化 Azure TableOperation.Retrieve

转载 作者:太空宇宙 更新时间:2023-11-03 19:57:13 25 4
gpt4 key购买 nike

我有一个类,如下所示:

public class Table : ITable
{
private CloudStorageAccount storageAccount;
public Table()
{
var storageAccountSettings = ConfigurationManager.ConnectionStrings["AzureStorageConnection"].ToString();
storageAccount = CloudStorageAccount.Parse(storageAccountSettings);
}
public async Task<TableResult> Retrieve(string tableReference, string partitionKey, string rowKey)
{
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(tableReference);
TableOperation retrieveOperation = TableOperation.Retrieve<SomeDomainModelType>(partitionKey, rowKey);
TableResult retrievedResult = await table.ExecuteAsync(retrieveOperation);
return retrievedResult;
}
}

此类是一个包装器,用于从 Azure 表中检索单个实体。它已被封装并符合接口(interface),以便在测试期间可以使用 Microsoft Fakes 将其剔除。目前它可以工作,但是如果以下内容更通用,它会更优雅:

TableOperation retrieveOperation = TableOperation.Retrieve<SomeDomainModelType>(partitionKey, rowKey);

我的问题是如何参数化 <SomeDomainModelType>这样我就可以在域模型中使用该方法与任何类型?有什么想法吗?

最佳答案

查看C# Programming Guide on Generics ,特别是 Generic Methods部分。基本上,定义一个可以采用 ITableEntity 的通用方法:

    public async Task<TableResult> Retrieve<T>(string tableReference, string partitionKey, string rowKey) where T : ITableEntity
{
var tableClient = storageAccount.CreateCloudTableClient();
var table = tableClient.GetTableReference(tableReference);
TableOperation retrieveOperation = TableOperation.Retrieve<T>(partitionKey, rowKey);
TableResult retrievedResult = await table.ExecuteAsync(retrieveOperation);
return retrievedResult;
}

关于c# - 如何在 c# .NET 的方法中参数化 Azure TableOperation.Retrieve<Element>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32297378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com