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를 준수하지 않으며 상태 논쟁. 어떻게 되나요? 그리고 경고를 제거하기 위해이 문제를 어떻게 수정할 수 있습니까?
- 나는 그것을 추가하려고했다u003CCLSCompliant(True)> 운이없는 두 항목에 귀속됩니다
- 나는 MSDN 기사를 전파하려고 노력했다 CLS 준수에서는 비 CLS 호환 'Mustoverride'멤버가 허용되지 않습니다. 결과가없는 코드로
- 액세서를 바꾸려고 노력했습니다
Friend
대신에Public
- 나는 열거적 인 유형을 지정하려고 시도했다 (
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