ReadonLyAttribute vs PropertyDescriptor.isReadOnly ()
-
09-09-2019 - |
문제
사용의 차이점은 무엇입니까? PropertyDescriptor
그것은 값을 반환합니다 IsReadOnly()
방법 및 a와 관련된 방법 ReadOnlyAttribute
?
해결책
주된 차이점은 자신의 것을 제공하면 더 많은 제어를 포착 할 수 있다는 것입니다. PropertyDescriptor
구현 (비아 ICustomTypeDescriptor
, TypeDescriptionProvider
또는 TypeConverter
). 그런 다음 선택할 수 있습니다 소유하다 예를 들어 액세스 권한을 기준으로 작성 가능한 경우 논리.
그러나 그렇습니다. 기본 구현에 따라 세터가없는 속성 및 표시된 속성에 대해 읽기 전용을보고합니다. ReadOnlyAttribute
.
다른 팁
반사판을 사용하여 볼 때 차이가 없습니다.
파생 클래스 중 하나 SimplePropertyDescriptor에는 다음 코드가 있습니다.
public override bool IsReadOnly
{
get
{
return this.Attributes.Contains(ReadOnlyAttribute.Yes);
}
}
그냥 메모.
각 엔티티의 읽기 전용 상태를 개별적으로 제어하기 위해 응용 프로그램의 엔티티 객체에 대해 ICUSTOMTYPEDESCRIPTOR를 구현하는 데 하루를 보냈습니다.
따라서 각 PropertyDescriptor 구현은 그 출처에서 얻은 엔티티 객체에 대한 참조를 유지 했으므로 IsReadOnly 속성은 다음과 같습니다.
public override bool IsReadOnly
{
get { return _owner.IsReadOnly;}
}
그러나 코드를 실행했을 때 BindingSource 구성 요소는 세트의 각 레코드에 대해 getProperties () 메소드의 ICUSTOMTYPEDESCRACTTOR에서 PropertyDescriptor 세트를 읽었지만 ISREADONLY의 값을 확인했을 때 첫 번째에서 얻은 속성 디스크립터 만 테스트했습니다. 기록.
완전한 시간 낭비 !!!!