세 가지 구현 중에서 결정하려고합니다.public 속성과 정적 읽기 전용
나는 IPerson 인터페이스를 가지고 있는데, 모든 사람 유형 (경찰, 학생, 변호사)이이를 구현합니다. 각 개인 유형마다 다른 AddressLocation (예 : 집, 사무실, 우편)이 있어야합니다. 이 위치는 결코 바뀌지 않으므로 정적/읽기 전용이 될 수 있습니다. 사람들은 일반적으로 처리되므로 SavePerson (IPerson person)은 IPerson 인터페이스에서 상속받은 모든 것을 가져오고 ID를 취하는 LoadPerson (int ID) 메서드를 사용합니다.
내 초기 솔루션은 DefaultLocation 속성을 IPerson에 추가하고 getter 만있었습니다. 이렇게하면 일반 메서드를 사용하여 데이터를 저장할 수 있습니다. 문제는 클래스의 인스턴스가 아직 없기 때문에 데이터를로드하려고 할 때 발생하므로이 속성을 참조 할 수 없습니다.
한편, 내 개인 유형마다 공개 정적 읽기 전용 DefaultLocation 속성을 만들 수 있습니다. 이 경우 Student.DefaultLocation을 호출하고이를 내 데이터를로드하는 메서드로 전달할 수 있습니다.
어떤 방법으로 가야하며 그 이유는 무엇입니까? 둘 다 장단점이있는 것으로 보입니다.
이 질문을 입력 할 때 세 번째 옵션이 나에게 왔습니다 : 클래스의 인스턴스화없이 참조 될 수있는 public static readonly proprty를 사용한 다음 호출 할 수있는 setter없이 공용 속성을 사용하면 어떻게됩니까? 일반적인 방법에서? - 각 유형의 위치는 코드의 나머지 부분에 사용할 수 있도록하려면 적어도 경우
public interface IPerson
{
LocationType DefaultLocation { get; }
}
public class PoliceOfficer : IPerson
{
public static readonly LocationType _DefaultLocationType = LocationType.Office;
public LocationType { get { return _DefaultLocationType; } }
}