Question

J'ai essayé de créer un contrôle Abstraite pour gérer certains de l'État dans notre application. Cependant, j'ai couru une faute de quelques problèmes de CLS et espérait que quelqu'un pourrait donner un aperçu.

J'ai une énumération en tant que tel:

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

Et une classe en tant que telle:

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

Quand je tente de compiler ce code, je suis parti avec un avertissement que le État est pas CLS propriété conforme et ni est le État argument. Comment venir? Et comment puis-je corriger ce problème pour supprimer les avertissements?

Était-ce utile?

La solution

En regardant votre code, le ENUM semble faire partie d'une classe appelée agents recenseurs. La classe ne figure pas dans votre code, mais je suppose que vous avez le plein contrôle sur elle.

La classe doit être marqué avec l'attribut conforme CLS ainsi.

Autres conseils

Pour supprimer les avertissements ajouter les attributs suivants afin que la classe, la méthode et l'apparence des biens comme ceci:

<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

Cela signifie au compilateur que vous voulez que les avertissements supprimés et que vous connaissez votre code n'est pas CLSCompliant.

Il se pourrait que vous ne disposez pas d'un élément avec la valeur 0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top