我正在学习NUnit,发现我们在每个测试函数之前都使用了[TestMethod]
之类的类修饰符。
然后我在this链接上了解了装饰器。根据这个答案
在C#中添加装饰器时,就像在类/方法中添加属性一样。将附加一个属性。
我只想问我是否要在整个类中使用属性(而不是讨论一种方法),那为什么我不选择继承类装饰器呢?
有什么区别...
答案 0 :(得分:1)
主要区别在于,如果对装饰器使用继承,则可能会有成倍的子类。
使用这样的属性装饰器的主要目的是为了横切关注点,您可以在许多类和方法(可重用)中重用同一装饰器
就您而言,情况完全不同。 [TestMethod]
用作“标记”而不是修饰符,以使框架知道哪种方法是测试方法。在这种情况下,我看不到与继承有任何关系。
您还可以将接口用作“标记”,但是在这种情况下,它不如使用属性灵活。
答案 1 :(得分:1)
请注意,因为link you provided使用 Decorator 这个词来表示2个完全不同的概念。该链接中的问题是在问这个问题:
装饰类或参数是什么意思?
目的是什么,什么时候可以做?
一些答案,请正确正确回答问题this和this。这两个人都在谈论Decorator Pattern。
但是,this的答案是在谈论完全不同的东西。尽管 decorator 可以用来表示属性(在C#中带有方括号),但是SO线程正在使用它来表示 Decorator Pattern >和属性。
属性
here对属性进行了说明。
装饰图案
here说明了装饰器模式模式。
装饰器模式与继承
比较here。