我正在尝试测试一种方法 - 并收到错误:
无法创建变量类型“Item”的实例,因为它没有 new() 约束
以下所需资料:
public interface IHasRect
{
Rectangle Rectangle { get; }
}
助手类:
class Item : IHasRect
{
public Item(Point p, int size)
{
m_size = size;
m_rectangle = new Rectangle(p.X, p.Y, m_size, m_size);
}
}
对于要测试的函数,我需要实例化一个对象......
public class SomeClass<T> where T : IHasRect
考试:
public void CountTestHelper<Item>() where Item : IHasRect
{
Rectangle rectangle = new Rectangle(0, 0, 100, 100);
SomeClass<Item> target = new SomeClass<Item>(rectangle);
Point p = new Point(10,10);
Item i = new Item(p, 10); // error here
...
}
[TestMethod()]
public void CountTest()
{
CountTestHelper<Item>();
}
我试图通过阅读http://msdn.microsoft.com/en-us/library/d5x73970.aspx和http://msdn.microsoft.com/en-了解此错误的含义或解决方法us/library/x3y47hd4.aspx - 但它没有帮助。
我不明白这个错误 - 我已经将“SomeClass”限制为类型。我无法约束整个 Test 类(由 Visual Studio 生成的单元测试类,其中包含所有测试) - 否则我会得到许多其他错误。Item 类没有任何模板...