Domanda

Ho cercato di creare un controllo astratto a gestire alcuni dello stato nella nostra applicazione. Tuttavia, ho eseguito un fallo di alcuni problemi di CLS e speravo che qualcuno potesse fornire qualche informazione.

Ho un'enumerazione in quanto tale:

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

E una classe come ad esempio:

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

Quando si tenta di compilare il codice mi sono lasciato con un avviso che il Stato di proprietà non è compatibile con CLS e nessuno dei due è il Stato argomento. Come mai? E come posso risolvere il problema di rimuovere le avvertenze?

È stato utile?

Soluzione

Guardando il codice, l'enumerazione sembra essere parte di una classe denominata enumeratori. La classe non è elencato nel codice, ma sto supponendo che si ha il pieno controllo su di esso.

La classe deve essere etichettato con l'attributo compatibile CLS pure.

Altri suggerimenti

Per rimuovere le avvertenze aggiungono i seguenti attributi in modo che la classe, il metodo e la proprietà simile a questa:

<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

Questo significa al compilatore che si desidera gli avvertimenti rimossi e che siete a conoscenza il codice non è CLSCompliant.

E 'possibile che non si dispone di un elemento con il valore 0.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top