속성은 쓰기 전용이면 안 됩니다.
업데이트: 2007년 11월
TypeName |
PropertiesShouldNotBeWriteOnly |
CheckId |
CA1044 |
범주 |
Microsoft.Design |
변경 수준 |
주요 변경 |
원인
public 또는 protected 속성에 set 접근자는 있지만 get 접근자가 없습니다.
규칙 설명
get 접근자는 속성에 대한 읽기 권한을 제공하고 set 접근자는 쓰기 권한을 제공합니다. 읽기 전용 속성을 사용하는 것은 가능하고 종종 필요하기도 하지만 쓰기 전용 속성의 사용은 금지되어 있습니다. 사용자에게 값을 설정하도록 허용한 다음 해당 값을 볼 수 없도록 하면 보안상 문제가 있기 때문입니다. 또한 읽기 권한이 없으면 공유 개체의 상태를 볼 수 없으므로 사용하는 데 제한을 받습니다.
위반 문제를 해결하는 방법
이 규칙 위반 문제를 해결하려면 속성에 get 접근자를 추가합니다. 또는, 쓰기 전용 속성의 동작이 필요한 경우 이 속성을 메서드로 변환할 것을 고려해 보십시오.
경고를 표시하지 않는 경우
이 규칙에서는 경고를 표시하는 것이 좋습니다.
예제
다음 예제에서 BadClassWithWriteOnlyProperty는 쓰기 전용 속성이 있는 형식이고, GoodClassWithReadWriteProperty에는 수정된 코드가 들어 있습니다.
Imports System
Namespace DesignLibrary
Public Class BadClassWithWriteOnlyProperty
Dim someName As String
' Violates rule PropertiesShouldNotBeWriteOnly.
WriteOnly Property Name As String
Set
someName = Value
End Set
End Property
End Class
Public Class GoodClassWithReadWriteProperty
Dim someName As String
Property Name As String
Get
Return someName
End Get
Set
someName = Value
End Set
End Property
End Class
End Namespace
using System;
namespace DesignLibrary
{
public class BadClassWithWriteOnlyProperty
{
string someName;
// Violates rule PropertiesShouldNotBeWriteOnly.
public string Name
{
set
{
someName = value;
}
}
}
public class GoodClassWithReadWriteProperty
{
string someName;
public string Name
{
get
{
return someName;
}
set
{
someName = value;
}
}
}
}