我已经尝试创建一个抽象的控制管理的一些国家在我们的应用程序。然而,我运行了一个犯规的一些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(IntegerUInteger)
有帮助吗?

解决方案

看你的代码,该枚举似乎是一部分的一类称为枚举数。这类不是列在你的代码,但是我假定你有充分的控制权。

类的需要被标记符合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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top