MSFakes Naming Convention匹配Generic类?

时间:2017-09-26 19:50:37

标签: c# unit-testing generics microsoft-fakes

我有一个名为MyClass的类,以及一个名为MyClass的通用版本。使用假货,我想生成一个JUST MyClass的垫片,而不是MyClass。我最初尝试过:

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="XXXX" Version="#.##.###"/>
  <ShimGeneration>
    <Clear/>
    <Add FullName="MyClass!"/>
  </ShimGeneration>
</Fakes>

这为MyClass生成了填充程序,但不是MyClass。如果我换了!到*,它确实匹配MyClass。这让我相信我需要使用一些命名约定来匹配MyClass。有谁知道它是什么/在哪里可以找到?

1 个答案:

答案 0 :(得分:1)

您使用严重重音字符加上类型上的泛型类型参数的数量。例如:MyClass<T>为1,MyClass<T,U>为2,等等。另请参见CLI specification 第10.7.2节类型名称和arity编码

您还应该将名称空间添加为值的一部分。

<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
  <Assembly Name="XXXX" Version="#.##.###"/>
  <ShimGeneration>
    <Clear/>
    <Add FullName="MyNamespace.MyClass`1!"/>
  </ShimGeneration>
</Fakes>