Pregunta

He intentado crear un control abstracto para gestionar algunos de estado en nuestra aplicación. Sin embargo, he corrido una falta de algunas cuestiones CLS y tenía la esperanza de que alguien pueda proporcionar alguna información.

Tengo una enumeración como tal:

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

Y una clase como tal:

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

Cuando intento compilar este código me quedo con una advertencia de que el Estado propiedad no es compatible con CLS y tampoco lo es el Estado argumento. ¿Cómo? ¿Y cómo puedo corregir este problema para eliminar las advertencias?

¿Fue útil?

Solución

En cuanto a su código, la enumeración parece ser parte de una clase llamada enumeradores. La clase no aparece en su código, pero estoy asumiendo que usted tiene control total sobre él.

La clase necesita ser etiquetado con el atributo compatible con CLS también.

Otros consejos

Para eliminar las advertencias añaden los siguientes atributos para que la clase, el método y la propiedad siguiente aspecto:

<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

Esto indica al compilador que desea que las advertencias removidos y que usted es consciente de que su código no es CLSCompliant.

Podría ser que usted no tiene un elemento con valor 0.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top