了解CLS合规性和正确的代码
-
05-09-2019 - |
题
我已经尝试创建一个抽象的控制管理的一些国家在我们的应用程序。然而,我运行了一个犯规的一些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
当我试图编纂这段代码我的一个警告, 状态 酒店是不符合CLS也不是 状态 参数。怎么来的?和我如何能纠正这一问题中删除的警告?
- 我已经尝试增加 <CLSCompliant(True)> 属于这两个项目没有运气
- 我试图来传播MSDN文章 不符合CLS'MustOverride'件不允许在符合CLS 入的代码有没有结果
- 我已经尝试改变的访问
Friend
而不是的Public
- 我试着指定一个类型Enum(
Integer
和UInteger
)
解决方案
看你的代码,该枚举似乎是一部分的一类称为枚举数。这类不是列在你的代码,但是我假定你有充分的控制权。
类的需要被标记符合CLS属性。
其他提示
删除的警告,添加以下的属性使得该类、方法和财产看起来是这样的:
<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.
这可能是因为你没有一个项目与价值的0.
不隶属于 StackOverflow