3

アプリケーションの状態の一部を管理するために、抽象化されたコントロールを作成しようとしました。しかし、私はいくつかの 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

このコードをコンパイルしようとすると、Stateプロパティが CLS に準拠しておらず、state引数も準拠していないという警告が表示されます。どうして?また、この問題を修正して警告を削除するにはどうすればよいですか?

4

3 に答える 3

5

コードを見ると、列挙型は列挙型と呼ばれるクラスの一部のようです。クラスはコードにリストされていませんが、完全に制御できると想定しています。

クラスには、CLS準拠の属性もタグ付けする必要があります。

于 2009-02-18T09:32:24.860 に答える
1

警告を削除するには、次の属性を追加して、クラス、メソッド、およびプロパティが次のようになるようにします。

<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 ではないことを認識していることをコンパイラに示します。

于 2009-02-17T23:07:17.060 に答える
0

値が 0 のアイテムがない可能性があります。

于 2010-06-03T17:18:33.460 に答える