为什么要在 C# 中密封自定义验证属性
我正在尝试为数据注释创建自定义 C# 验证属性(没有密封关键字)。
public class MyValidatorAttribute : ValidationAttribute
{
}
但是微软页面此处表示“使该类不可继承。”为什么?
我是否通过允许“MyValidatorAttribute”类可继承而忽略了某些内容?
I'm trying to create a custom C# Validation Attribute(without sealed keyword) for Data Annotation.
public class MyValidatorAttribute : ValidationAttribute
{
}
But Microsoft page here says "Make the class not inheritable." why?
Do I overlooked something by allowing "MyValidatorAttribute" class as inheritable?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据这个代码分析规则这是出于性能原因。
当检索自定义属性时,.NET 通常会搜索继承层次结构,这可能会增加可能不需要的开销。
这不会阻止您创建一个抽象属性,多个密封实现都继承自该抽象属性。
According to this code analysis rule it is for performance reasons.
When retrieving custom attributes .NET will normally search the inheritance hierarchy and this can add an overhead that may not be required.
This would not stop you creating an abstract attribute that several sealed implementations inherited from.