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

It could be that you do not have an item with value 0.

于 2010-06-03T17:18:33.460 回答