我试图创建一个抽象控件来管理我们应用程序中的某些状态。但是,我对一些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 参数也不是。怎么会?如何更正此问题以删除警告?
Friend
而不是Public
Integer
和UInteger
)答案 0 :(得分:5)
查看你的代码,enum似乎是一个名为枚举器的类的一部分。该类未列在您的代码中,但我假设您可以完全控制它。
该类也需要使用符合CLS的属性进行标记。
答案 1 :(得分: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。
答案 2 :(得分:0)
可能是您没有值为0的项目。