2011-04-10 4 views

답변

3

개념적으로 종속성 속성은 종속성 개체에 단순히 있고 속성을 사용할 때 의존하지 않는 항목입니다. 이 개체에 CLR 속성과 마찬가지로 Total 속성이 있는지 묻는 경우 나중에 double이 아니라 int이 될 수 있습니다. 따라서 가능하다면 종속성 속성 const을 만들지 만 할 수는 없으므로 readonly이 차선책입니다. readonly 키워드를 사용

가 적어도 세 가지 효과 :

  • 는 값이 실수로
  • 가 지원 값을 변경 저자을 방지
  • 변경되지 않습니다 코드의 독자들에게 알려 상황이 바뀌지 않을 때를 알면 도움이되는 컴파일러.
+0

예, 이해합니다. 하지만 내가 그것을 읽기 전용으로 선언하지 않고, 런타임에이 속성을 동적으로 변경하고 싶다면 그렇게 할 수 있습니까? 아니면이 시나리오에 더 나은 해결책이 있습니까? – zinking

1

초기화 후이 속성의 값을 변경할 수 없으므로 분명합니다.

1

희망이 도움이 될 : Silverlight.net forums: DependencyProperty - public static readonly?

인용하기 :

"공용 정적 읽기 전용은"다시 등록 호출에서 제공되는 필드입니다. 필드는 속성의 식별자입니다. Silverlight 속성 시스템에서 수행 할 작업을 알 수 있도록 식별자 만 필요하므로 종속성 속성의 CLR "래퍼"를 정의 할 때 속성 시스템을 직접 사용할 수 있습니다. 래퍼가 있으면 일반 속성처럼 모든 속성을 더 사용할 수 있습니다.

공용이므로 교차 어셈블리를 포함하여 모든 속성 시스템 호출에서 액세스 할 수 있습니다.

정적이고 읽기 전용이므로 변경해야하는 정의가 아닙니다. 부동산 시스템은 일관된 결과를 얻을 필요가 있습니다.

첨부 된 속성의 경우 "owner"클래스가 있어야합니다. 소유자 클래스는 RegisterAttached를 호출하는 클래스 여야하며, DependencyObject 인스턴스에서 연결된 속성을 설정하려고 할 때 XAML 파서가 수행 할 작업을 알 수 있도록 정적 접근 메서드 (Get * 및 Set *)도 정의해야합니다. 그래서 약간의 차이가 있습니다. 왜냐하면 연결된 속성은 일반적으로 "래퍼"가 아니기 때문에 모든 코드 액세스는 Get * 및 Set * 접근자를 사용하기 때문입니다.

관련 문제