this과 같은 다른 스레드를 읽었지만 제대로 작동하지 않았습니다. 지금 ClassB가의 새로운 객체를 생성하면 내가 상속 된 멤버를 숨기기위한 상속
_shouldBeInteger, _shouldBeBool, _shouldBeDateTime;
shouldBeInteger,shouldBeBool,shouldBeDateTime
을 얻을하지만 사용자에 _variables을 숨길
public class ClassA
{
public string _shouldBeInteger;
public string _shouldBeBool;
public string _shouldBeDateTime;
}
public class ClassB : ClassA
{
public int? shouldBeInteger
{
get { return (_shouldBeInteger != null) ? Convert.ToInt32(Convert.ToDouble(_shouldBeInteger)) : new int?(); }
set { _shouldBeInteger = Convert.ToString(value); }
}
//... same thing with datetime etc.
}
:
나는 두 개의 클래스를 얻었다. ClassB에서 비공개로 설정하면 무시되지만 문자열 값을 파싱하려면 해당 클래스에 액세스해야합니다.업데이트
주로 그들이 쓰기 가능해야하는 이유입니다 ClassC 충전 ClassAs '값이 있습니다. 이 날의 작동 방식을 변경할 수있는 방법은 없지만를 ClassA의 프로그래머가 이상한에서 생산 때문에,를 ClassA의 제어 및 ClassB가
ClassC //not changeAble for me
{
//infomagic filling values of ClassA
}
작동하지 않습니다 개인에를 ClassA 변수 설정에 완벽 해요 방법.
솔루션
를 ClassA는 쓸 수 있지만, inheritated보다 다른 클래스 읽을 수 없습니다 할 필요가 있기 때문에, 나는 마침내이있어 :
ClassB가이 포기하지 않고, theese 특성 작동됩니다ClassA
{
public string _shouldBeInteger { protected get; set; }
//and so on
}
그들 밖에. 인텔리은 여전히 표시되지만 사용을 고려할 수 있습니다
[EditorBrowsable(EditorBrowsableState.Never)]
가를 해결하기 위해.
감사합니다.
필드를 비공개로 설정하면 작동하지 않는다고 공개되었거나 보호 된 상태로 작동해야합니까? –
언더 스코어 접두사는'public members'가 아닌'private members'의 표준입니다. – gdoron
@ gdoron의 주석을 간과하기 만하면 밑줄 접두사는 CLS와 호환되지 않으므로 표준이 아니지만 CLS 준수에는 관심이 없습니다. 따라서 CLS 준수 경고는 최종 공개를 위해 좋은 상태가 아님을 나타냅니다. –