C# 用VB.Net调用setter的SameAs断言

C# 用VB.Net调用setter的SameAs断言,c#,vb.net,nunit,C#,Vb.net,Nunit,我在努尼特发现了一些奇怪的行为吗 以下VB.Net测试因以下原因失败: Test 'SameAsTest.UseSameAs' failed: Expected string length 19 but was 29. Strings differ at index 19. Expected: "Prop1 Get,Prop1 Get" But was: "Prop1 Get,Prop1 Get,Prop1 Set" ----------------------------

我在努尼特发现了一些奇怪的行为吗

以下VB.Net测试因以下原因失败:

Test 'SameAsTest.UseSameAs' failed: 
  Expected string length 19 but was 29. Strings differ at index 19.
  Expected: "Prop1 Get,Prop1 Get"
  But was:  "Prop1 Get,Prop1 Get,Prop1 Set"

  ------------------------------^
    SameAsTest.vb(33,0): at SameAsTest.UseSameAs()

1 passed, 1 failed, 0 skipped, took 1.80 seconds (NUnit 2.5.5).


使用系统;
使用System.Collections.Generic;
使用NUnit.Framework;
[测试夹具]
类虚拟
{
私人名单;
私有字符串mPropValue=“ThisIsIt”;
[设置]
公共作废设置()
{
CallHistory=新列表();
}
公共字符串Prop1
{
得到
{
CallHistory.Add(“Prop1 Get”);
返回mPropValue;
}
设置
{
CallHistory.Add(“Prop1集”);
mPropValue=value;
}
}
[测试]
公共无效UseSameAs()
{
断言(Prop1,Is.SameAs(Prop1));
Assert.That(String.Join(“,”,CallHistory.ToArray())是.EqualTo(“Prop1 Get,Prop1 Get”);
}
[测试]
公共无效用途名称()
{
Assert.AreName(Prop1,Prop1);
Assert.That(String.Join(“,”,CallHistory.ToArray())是.EqualTo(“Prop1 Get,Prop1 Get”);
}
}

问题实际上不是调用
SameAs
。问题在于属性作为
断言的第一个参数被传递。该
调用

Assert.That
有许多不同的重载,事实证明,从VB到C#的重载解析方式是不同的。在C#中,属性与以下内容匹配:

Asset.That(object actual, IResolveConstraint expression);
Assert.That<Of T>(ByRef T actual, IResolveConstraint express);
在VB中,它与:

Asset.That(object actual, IResolveConstraint expression);
Assert.That<Of T>(ByRef T actual, IResolveConstraint express);
或者通过强制参数使用
That
方法的预期重载

Assert.That(CType(Prop1, Object), [Is].SameAs(Prop1))

谢谢,这就解释了。
Dim prop1 = Prop1
Assert.That(prop1, [Is].SameAs(Prop1))
Assert.That(CType(Prop1, Object), [Is].SameAs(Prop1))