昨天我在实现《通过扩展改善ASP.NET MVC的验证机制[使用篇]》的时候为了Attribute 的一个小问题后耗费了大半天的精力,虽然最终找到了问题的症结并解决了问题,但是我依然不知道微软如此设计的目的何在。闲话少说,我们先来演示一下我具体遇到的问题如何发生的。

目录:
一、问题重现
二、通过Attribute的Equals方法和GetHashCode方法进行对等判断
三、Attribute对象和Attribute类型的HashCode
四、倘若为FooAttribute添加一个属性/字段
五、Attribute的GetHashCode方式是如何实现的?

如下面的代码片断所示,我们定义了两个Attribute。其中抽象的BaseAttribute中定义了一个Name属性,而FooAttribute直接继承自BaseAttribute,并不曾定义任何属性和字段。在类型Bar上,我们应用了三个FooAttribute特性,其Name属性分别为A、B和C。

)]
)]
)]
class Bar
   5: { 
   6:  
   7: }
   8:  
true)]
class BaseAttribute : Attribute
  11: {
string Name { get; set; }
  13: }
class FooAttribute : BaseAttribute
  15: { 

  17: } 

相关文章:

  • 2022-12-23
  • 2022-01-16
  • 2022-12-23
  • 2021-06-28
  • 2021-12-24
  • 2021-12-23
  • 2021-09-28
猜你喜欢
  • 2022-12-23
  • 2021-06-21
  • 2022-01-04
  • 2021-10-03
  • 2021-12-18
  • 2021-12-01
  • 2022-02-05
相关资源
相似解决方案