我有一个名为 MyClass
的类(class),以及一个名为 MyClass<C>
的通用版本。使用假货,我想生成一个 JUST MyClass<C>
的垫片,而不是MyClass
。我最初尝试过:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="XXXX" Version="#.##.###"/>
<ShimGeneration>
<Clear/>
<Add FullName="MyClass!"/>
</ShimGeneration>
</Fakes>
这为 MyClass
生成了垫片,但不是MyClass<C>
。如果我改变!到 *,它确实匹配 MyClass<C>
。这让我相信我需要使用一些命名约定来匹配 MyClass<C>
。有谁知道它是什么/我可以在哪里找到它?
最佳答案
您可以使用重音符号加上该类型的泛型类型参数的数量。例如:MyClass<T>
将为 1, MyClass<T,U>
将为 2 等。另请参见 CLI specification 第 10.7.2 节类型名称和数量编码。
您还应该添加您的命名空间作为值的一部分。
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="XXXX" Version="#.##.###"/>
<ShimGeneration>
<Clear/>
<Add FullName="MyNamespace.MyClass`1!"/>
</ShimGeneration>
</Fakes>
关于c# - MSFakes 命名约定是否与通用类相匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46434672/