sup*_*tor 11 c# generics microsoft-fakes
我没有弄清楚如何为特定的泛型方法设置垫片.这是实际方法的签名:
public IEnumerable<TElement> ExecuteQuery<TElement>(TableQuery<TElement> query, TableRequestOptions requestOptions = null, OperationContext operationContext = null) where TElement : ITableEntity, new();
Run Code Online (Sandbox Code Playgroud)
这就是我目前正在尝试(和失败)配置垫片的方式:
ShimCloudTable shimTable = new ShimCloudTable();
shimTable.ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<MyEntity> = (query, options, context) => {
return new List<MyEntity>();
};
Run Code Online (Sandbox Code Playgroud)
编译器只给我一些"无效的表达式术语"错误,所以显然我在这里缺少一些非常基本的东西.
编辑:这是MS Fakes生成的垫片签名:
public void ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<TElement>(FakesDelegates.Func<TableQuery<TElement>, TableRequestOptions, Microsoft.WindowsAzure.Storage.OperationContext, System.Collections.Generic.IEnumerable<TElement>> shim) where TElement : ITableEntity, new();
Run Code Online (Sandbox Code Playgroud)
sup*_*tor 22
我找不到任何覆盖这个的官方文档,但问题很简单.我已经习惯了Fakes用于简单方法,你只需要将Func分配给你感兴趣的shimmed方法委托,就像这样:
shimAccount.CreateCloudTableClient = () => { return shimTableClient; };
Run Code Online (Sandbox Code Playgroud)
但是,当涉及泛型时,Fakes会创建一个方法,该方法将Func作为参数而不是直接公开委托.所以我需要的是:
shimTable.ExecuteQueryOf1TableQueryOfM0TableRequestOptionsOperationContext<MyEntity>((query, options, context) =>
{
return new List<MyEntity>();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7626 次 |
| 最近记录: |