다음을 통해 공유


속성은 쓰기 전용이면 안 됩니다.

업데이트: 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; 
         } 
      }
   }
}