为什么要在 C# 中密封自定义验证属性

发布于 2025-01-14 08:38:15 字数 484 浏览 0 评论 0原文

我正在尝试为数据注释创建自定义 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚雾 2025-01-21 08:38:15

根据这个代码分析规则这是出于性能原因。

当检索自定义属性时,.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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文