سؤال

لقد حاولت إنشاء عنصر تحكم مستخرج لإدارة بعض الحالة في تطبيقنا. ومع ذلك، فقد واجهت خطأ في بعض مشكلات CLS وكانت آمل أن يوفر شخص ما بعض البصيرة.

لدي تعداد على هذا النحو:

<Flags()> _
Public Enum FormState
    Read = 1
    Edit = 2
    Insert = 4
End Enum

وفئة على هذا النحو:

Public MustInherit Class Fields
    Inherits System.Web.UI.UserControl

    Public Property State() As Enumerators.FormState
        Get
            Return _State
        End Get

        Set(ByVal value As Enumerators.FormState)
            _State = value
            ToggleState(value)
        End Set
    End Property

    Protected MustOverride Sub ToggleState(ByVal state As FormState)
End Class

عندما أحاول تجميع هذا الرمز الذي تركته مع تحذير حالة الممتلكات ليست متوافقة CLS ولا حالة جدال. كيف ذلك؟ وكيف يمكنني تصحيح هذه المشكلة لإزالة التحذيرات؟

هل كانت مفيدة؟

المحلول

بالنظر إلى التعليمات البرمجية الخاصة بك، يبدو أن العادة جزءا من فئة تسمى العدادات. لا يتم سرد الفصل في التعليمات البرمجية الخاصة بك، لكنني أفترض أن لديك سيطرة كاملة عليها.

يجب وضع علامة الفئة مع السمة المتوافقة مع CLS أيضا.

نصائح أخرى

لإزالة التحذيرات، أضف السمات التالية بحيث تبدو الفئة والطريقة والممتلكات مثل هذا:

<CLSCompliant(False)> _
Public MustInherit Class Fields
    Inherits System.Web.UI.UserControl

    <CLSCompliant(False)> _
    Public Property State() As Enumerators.FormState
        Get
            Return _State
        End Get

        Set(ByVal value As Enumerators.FormState)
            _State = value
            ToggleState(value)
        End Set
    End Property

    <CLSCompliant(False)> _
    Protected MustOverride Sub ToggleState(ByVal state As FormState)
End Class

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

يمكن أن يكون لديك عنصر مع القيمة 0.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top