مشاركة عبر


CA1813: Avoid unsealed attributes

TypeName

AvoidUnsealedAttributes

CheckId

ca1813

Category

Microsoft.الأداء

تعطيل تغيير

فصل

السبب

يرث نوع عام من System.Attributeوليس مجرد وهو غير مغلقة ( NotInheritableفي Visual أساسى).

وصف القاعدة

.NET Frameworkتوفر مكتبة الفئات وظائف استرداد السمات المخصصة. بشكل افتراضي، بحث هذه الأساليب في هيكلي لوراثة سمة؛ من أجل مثال Attribute.GetCustomAttributeببحث عن نوع السمة المحددة، أو أي نوع السمة التي تمتد نوع السمة المحددة. ختمها السمة يقضي ببحث من خلال هيكلي للوراثة، و يؤدي إلى تحسين الأداء.

كيف إلى الإصلاح انتهاكات

إلى إصلاح انتهاكا لهذه قاعدة أو قم بتخزين البيانات الآمن نوع السمة أو جعله مجردة.

عند إلى منع التحذيرات

هو آمن لمنع ظهور تحذير من القيم بالموضع هو قاعدة. يجب القيام بذلك فقط إذا كنت تقوم بتعريف التسلسل هرمي سمة و لا يمكن تخزين البيانات الآمن السمة أو جعله مجردة.

مثال

يلي مثال تظهر سمة مخصصة تفي بهذه قاعدة.

Imports System

Namespace PerformanceLibrary

' Satisfies rule: AvoidUnsealedAttributes.
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Struct)>  _
NotInheritable Public Class DeveloperAttribute
    Inherits Attribute
    Private nameValue As String

    Public Sub New(name As String)
        nameValue = name
    End Sub


    Public ReadOnly Property Name() As String
        Get
            Return nameValue
        End Get
    End Property
End Class 

End Namespace
using System;

namespace PerformanceLibrary 
{
    // Satisfies rule: AvoidUnsealedAttributes.

    [AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct)]
    public sealed class DeveloperAttribute: Attribute
    {
        private string nameValue;
        public DeveloperAttribute(string name) 
        { 
            nameValue = name; 
        }

        public string Name
        {
            get 
            {
                return nameValue;
            }
        }
    }

}

القواعد ذات الصلة

ca1019: قم بتعريف accessors للوسائط السمة

ca1018: السمات علامة مع AttributeUsageAttribute

راجع أيضًا:

المرجع

إرشادات استخدام السمة