2009-02-17 22 views
3

我試圖創建一個抽象控件來管理我們應用程序中的某些狀態。但是,我遇到了一些CLS問題,希望有人能提供一些見解。瞭解CLS合規性和正確的代碼

我有一個枚舉這樣:

<Flags()> _ 
Public Enum FormState 
    Read = 1 
    Edit = 2 
    Insert = 4 
End Enum 

和A類爲這樣的:

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並且狀態參數也不是。怎麼來的?我怎樣才能糾正這個問題,以消除警告?

+0

如果您只是忽略警告,您爲什麼首先關心CLS? – MichaelGG 2009-02-17 23:50:50

+0

我想知道同樣的。 – 2009-02-18 09:57:47

回答

5

看着你的代碼,枚舉似乎是一個名爲枚舉器的類的一部分。該類未在您的代碼中列出,但我假設您完全可以控制它。

該類還需要使用符合CLS的屬性進行標記。

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 

這意味着到想要的警告刪除編譯器和您瞭解您的代碼不符合CLS。

0

可能是因爲您沒有值爲0的項目。