当我开始使用微软正版正货,我很兴奋地开始垫补一些.NET方法。 我带领相信,我将能够匀任何.NET方法,静态与否: http://msdn.microsoft.com/en-us/library/hh549176.aspx 。
不过,我一直在试图匀一些在TcpClient的,只存根的方法创建的,它确实我没有好,因为我希望能够改变一些方法给我回自己的数据,而不是依赖于现场TcpClient的给我的数据。
我愿意就如何做到这一点,如果有另一种方式超越了微软正版正货的任何建议。
编辑:添加代码来说明问题
[TestMethod]
public void CommunicationTest()
{
var stubbedTcpClient = new System.Net.Sockets.Fakes.StubTcpClient
{
};
//No such ShimTcpClient exists
var shimmedTcpClient = new System.Net.Sockets.Fakes.ShimTcpClient
{
};
}
得到它与帮助工作这个博客帖子和这里 。
解决的办法是增加我想在System.fakes文件中明确垫片的类。 这就是我的貌似现在:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Clear/>
<Add FullName="System.Net.Sockets.TcpClient"/>
<Remove Obsolete="1"/>
</ShimGeneration>
</Fakes>
的Remove Obsolete="1"
是从由所述垫片代码被抛出停止错误时,它试图垫片[作废]代码。
我也有同样的问题。
我System.fakes和mscorlib.fakes是这样的:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<ShimGeneration>
<Add Namespace="System.ComponentModel.BackgroundWorker"/>
</ShimGeneration>
</Fakes>
和
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Add Namespace="System.ComponentModel.BackgroundWorker"/>
</ShimGeneration>
</Fakes>
解
System.fakes
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.ComponentModel.BackgroundWorker!"/>
</ShimGeneration>
</Fakes>
mscorlib.fakes
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="mscorlib" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.ComponentModel.BackgroundWorker!"/>
</ShimGeneration>
</Fakes>
和保存文件后,我重新生成解决方案。 现在我有ShimBackgroundWorker。