مشاركة عبر


ca1052: يجب أن تكون مغلقة أنواع حامل ثابت

TypeName

StaticHolderTypesShouldBeSealed

CheckId

ca1052

Category

Microsoft.تصميم

تعطيل تغيير

فصل

السبب

نوع عامة أو محمية تحتوي على الأعضاء ثابتة فقط و هو لم يتم تعريفها مع معدل مختوم (C# مرجع)(NotInheritable (Visual Basic)).

وصف القاعدة

Th هو يفترض قاعدة التي نوع الذي يحتوي على الأعضاء ثابتة فقط هو غير مصمم لوراثة، النوع عدم توفر أي من الوظائف التي يمكن تجاوزها في نوع مشتق. نوع A التي هو لم تقصد أن تكون موروثة يجب وضع علامة مع sealedالمعدل للسماح باستخدامها كنوع أساسي.

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

لإصلاح انتهاكا لهذه قاعدة، وضع علامة نوع ك sealed. إذا قمت يتم استهداف .NET Framework2.0 أو إصدار سابق، أسلوباً أفضل هو لوضع علامة على نوع ك static. بهذه الطريقة، فتجنب الحاجة إلى تعريف الدالة الإنشائية خاص منع فئة من الذي يتم إنشاؤه.

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

منع ظهور تحذير من القيم بالموضع هو قاعدة إلا إذا النوع هو لتحتوي تكون موروثة. غياب sealedيقترح التعديل الذي النوع هو مفيدة كنوع أساسي.

مثال انتهاك

الوصف

يلي مثال يظهر نوع يخالف قاعدة.

الرمز

Imports System

Namespace DesignLibrary

    Public Class StaticMembers

        Private Shared someField As Integer 

        Shared Property SomeProperty As Integer
            Get
                Return someField
            End Get
            Set
                someField = Value
            End Set
        End Property

        Private Sub New()
        End Sub

        Shared Sub SomeMethod()
        End Sub

    End Class

End Namespace
using System;

namespace DesignLibrary
{
    public class StaticMembers
    {
        static int someField;

        public static int SomeProperty
        {
            get
            {
                return someField;
            }
            set
            {
                someField = value;
            }
        }

        StaticMembers() {}

        public static void SomeMethod() {}
    }
}
using namespace System;

namespace DesignLibrary
{
    public ref class StaticMembers
    {
        static int someField;

        StaticMembers() {}

    public:
        static property int SomeProperty
        {
            int get()
            {
                return someField;
            }

            void set(int value)
            {
                someField = value;
            }
        }

        static void SomeMethod() {}
    };
}

إصلاح مع معدّل ثابت

الوصف

يوضح المثال التالي كيفية إلى إصلاح انتهاكا لهذه قاعدة بوضع علامة على نوع مع staticالمعدل.

الرمز

using System; 

namespace DesignLibrary
{    
    public static class StaticMembers    
    {        
        private static int someField;     

        public static int SomeProperty        
        {            
            get { return someField; }            
            set { someField = value; }        
        }                

        public static void SomeMethod()         
        {        
        }         

        public static event SomeDelegate SomeEvent;    
    }     

    public delegate void SomeDelegate();
}

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

ca1053: لا ينبغي أنواع حامل ثابت المنشئات