我是C#的新手,所以這可能是一個真正的轉儲問題:我在我的類中實現了IComparable,並且想用NUnit測試它。但是CompareTo方法被標記爲私有的,因此不能從測試中訪問。
這是什麼原因,我該如何解決這個問題?
了IComparable:C#:IComparable implementation private
public class PersonHistoryItem : DateEntity,IComparable
{
...
int IComparable.CompareTo(object obj)
{
PersonHistoryItem phi = (PersonHistoryItem)obj;
return this.StartDate.CompareTo(phi.StartDate);
}
}
測試:
[TestMethod] public void TestPersonHistoryItem() { DateTime startDate = new DateTime(2001, 2, 2); DateTime endDate = new DateTime(2010, 2, 2); PersonHistoryItem phi1 = new PersonHistoryItem(startDate,endDate);
PersonHistoryItem phi2 = new PersonHistoryItem(startDate, endDate); Assert.IsTrue(phi1.CompareTo(phi2)==0); }
謝謝,但我不能在IComparable那裏聲明我的變量。所以根據你的回答,另一種選擇是隱式實現它們,我猜。我會怎麼做? – 2010-03-25 12:47:44
你也可以在你的assert語句中強制轉換它們:'Assert.IsTrue(((IComparable)phi1).CompareTo((IComparable)phi2));'' – 2010-03-25 12:57:36