Frage

Ich habe versucht, eine abstrahierte Kontrolle zu schaffen, um einen Teil des Staates in unserer Anwendung zu verwalten. Ich habe jedoch ein Foul von einigen CLS Probleme laufen und hatte gehofft, dass jemand einen Einblick bieten könnte.

Ich habe eine Aufzählung als solche:

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

Und eine Klasse als solche:

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

Wenn ich versuche, diesen Code zu kompilieren ich mit einer Warnung gelassen bin, dass die Staat Eigenschaft ist nicht CLS-kompatibel und weder ist die Staat Argument. Woher? Und wie kann ich dieses Problem beheben, die Warnungen zu entfernen?

War es hilfreich?

Lösung

in Ihrem Code Blick scheint die Enum Teil einer Klasse namens Enumeratoren zu sein. Die Klasse ist in Ihrem Code aufgeführt, aber ich gehe davon aus, dass Sie die volle Kontrolle über sie haben.

Die Klasse muss auch mit dem CLS-kompatibel Attribute markiert werden.

Andere Tipps

die Warnungen entfernen fügen Sie die folgenden Attribute, so dass die Klasse, Methode und Eigenschaft wie folgt aussehen:

<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

Dies bedeutet für den Compiler, dass Sie die Warnungen entfernt wollen und dass Sie bewusst Ihren Code nicht CLSCompliant ist.

Es könnte sein, dass Sie nicht ein Element haben mit dem Wert 0.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top