【问题标题】:How to filter generic class for shim?如何过滤垫片的通用类?
【发布时间】:2026-01-20 04:20:03
【问题描述】:

我有一个类似于以下的通用类

public class HelperClass<T> where T : DBTable, new()
{
}

我必须填充这个类,但是当我编译代码时,我得到了警告。 我在 .fakes 中添加了以下行

<pre lang="c#"><Add FullName="A.B.HelperClass" /></pre>

当我设置诊断 = true 时, 它正在尝试像 HelperClass'1 那样填充类

如何在这种情况下应用过滤器?

【问题讨论】:

  • 您是否尝试过以 `1 形式在末尾指定类?
  • 是的。我努力了。我添加了行 。但是当我添加像

标签: c# unit-testing shim


【解决方案1】:

使用以下内容为泛型类型的所有版本生成填充程序。

<ShimGeneration>
    </Clear>
    <Add TypeName="HelperClass`1"/>
</ShimGeneration>

如果你碰巧也有一个同名的非泛型类,上面将不会为它生成垫片。如果您希望为两者生成它们,则需要使用以下内容。

<ShimGeneration>
    </Clear>
    <Add TypeName="HelperClass"/>
</ShimGeneration>

最后,如果您希望只为非泛型生成 shim,则需要使用以下内容。

<ShimGeneration>
    </Clear>
    <Add TypeName="HelperClass!"/>
</ShimGeneration>

我不相信您可以为泛型类的选定版本生成垫片。因此,如果您希望生成 ShimHelperClass 而不是 ShimHelperClass,我相信您不走运。

【讨论】: