C#属性不被允许继承

时间:2011-01-05 22:46:34

标签: c# unit-testing mstest

由于属性不在C#中继承(至少我认为它们没有) - 在运行MyTestMethod测试时,以下代码如何仍然显示Hello弹出窗口:

[TestClass]
public class BaseTestClass {
    [TestInitialize]
    public void Foo() {
        System.Windows.Forms.MessageBox.Show("Hello");
    }
}

[TestClass]
public class TestClass : BaseTestClass {
    [TestMethod]
    public void MyTestMethod() {
        Assert.IsTrue(true);
    }
}

2 个答案:

答案 0 :(得分:4)

默认情况下会继承属性,但可以禁用此属性 - 请参阅AttributeUsage.Inherited

如果使用AttributeUsage属性修饰属性定义,则可以设置此属性:

[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public class MyAttribute : Attribute
{
}

答案 1 :(得分:0)

如果不能正常工作方法Foo虚拟并只是覆盖它,并将TestInitialize放在TestClass覆盖方法

 [TestClass]
  public class BaseTestClass
  {

    public virtual void Foo()
    {
      System.Windows.Forms.MessageBox.Show("Hello");
    }
  }

  [TestClass]
  public class TestClass : BaseTestClass
  {
     [TestInitialize]
    public override void Foo()
    {
      base.Foo();
    }

    [TestMethod]
    public void MyTestMethod()
    {
      Assert.IsTrue(true);
    }
  }