错误 CS0119;class 是一种类型,在给定的上下文中无效
熟悉 C# 后,在进行断言的行上进行单元测试时,我收到以下错误Assert.IsInstanceTypeOf。
Error CS0119 'Product' is a type, which is not valid in the given context
创建类型的事情已经执行了。是什么导致了这个错误?
单元测试1.cs
using Microsoft.VisualStudio.TestTools.UnitTesting;
using ProductNamespace;
namespace TestProject2
{
[TestClass]
public class TestProduct
{
[TestMethod]
public void TestNewProduct()
{
Product mock_product = new Product(4.95);
Assert.IsInstanceOfType(mock_product, Product);
}
}
}
产品.cs
namespace ProductNamespace
{
public class Product
{
private double price;
public Product(double price)
{
this.price = price;
}
}
}
回答
看起来您正在尝试使用该IsInstanceOfType(object, Type)方法。为此,您需要提供一个Type参数,但目前您刚刚直接指定了类名。这不是有效的 C# 表达式 - 您需要使用typeof运算符Type从类名中获取 a :
Assert.IsInstanceOfType(mock_product, typeof(Product));
请注意,这确实不是一个有用的测试 - 您没有测试任何有关代码的内容,您实际上是在询问 .NET 是否正常运行。如果代码到达该行(即,如果构造函数没有抛出异常)那么它一定会通过——因为 的结果new Xyz总是一个Xyz. (在 COM 接口周围有一个轻微的边缘情况,但它在这里不相关。)