了解CLS合规性和正确的代码

Gav*_*ler 3 vb.net standards-compliance cls-compliant

我试图创建一个抽象控件来管理我们应用程序中的某些状态.但是,我对一些CLS问题犯了一些错误,希望有人可以提供一些见解.

我有一个这样的枚举:

<Flags()> _
Public Enum FormState
    Read = 1
    Edit = 2
    Insert = 4
End Enum
Run Code Online (Sandbox Code Playgroud)

这样一个班级:

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
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,我留下一个警告,State属性不符合CLS,也不是state参数.怎么会?如何更正此问题以删除警告?

  • 我试图在没有运气的情况下将<CLSCompliant(True)>属性添加到这两个项目中
  • 我试图传播MSDN文章非符合CLS的"MustOverride"成员不允许符合CLS的代码进入代码而没有结果
  • 我试过更改访问器Friend而不是Public
  • 我已经尝试为枚举(IntegerUInteger)指定一个类型

Ren*_*aal 5

查看代码,枚举似乎是一个名为枚举器的类的一部分.该类未列在您的代码中,但我假设您可以完全控制它.

该类也需要使用符合CLS的属性进行标记.