gpt4 book ai didi

c# - 用于通用方法的 Microsoft Fakes shim

转载 作者:可可西里 更新时间:2023-11-01 08:37:09 25 4
gpt4 key购买 nike

我无法理解如何为特定的通用方法设置垫片。这是实际方法的签名:

public IEnumerable<TElement> ExecuteQuery<TElement>(TableQuery<TElement> query, TableRequestOptions requestOptions = null, OperationContext operationContext = null) where TElement : ITableEntity, new();

这是我目前正在尝试(但失败)配置 shim 的方式:

ShimCloudTable shimTable = new ShimCloudTable();
shimTable.ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<MyEntity> = (query, options, context) => {
return new List<MyEntity>();
};

编译器只是给我一些“无效的表达式项”错误,所以显然我在这里遗漏了一些非常基本的东西。

编辑:这是由 MS Fakes 生成的 shim 签名:

public void ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<TElement>(FakesDelegates.Func<TableQuery<TElement>, TableRequestOptions, Microsoft.WindowsAzure.Storage.OperationContext, System.Collections.Generic.IEnumerable<TElement>> shim) where TElement : ITableEntity, new();

最佳答案

我找不到任何关于这个的官方文档,但问题毕竟很简单。我习惯于将 Fakes 用于简单的方法,您只需将 Func 分配给您感兴趣的填充方法委托(delegate),如下所示:

shimAccount.CreateCloudTableClient = () => { return shimTableClient; };

但是,当涉及到泛型时,Fakes 会创建一个将 Func 作为参数的方法,而不是直接公开委托(delegate)。所以我需要的是:

shimTable.ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<MyEntity>((query, options, context) =>
{
return new List<MyEntity>();
});

关于c# - 用于通用方法的 Microsoft Fakes shim,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21146957/

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