メソッドをテストしようとしていますが、エラーが発生します:
new()制約がないため、変数タイプ'Item'のインスタンスを作成できません
以下に必要な情報:
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クラスにはテンプレートがありません...