wpf - una - hresult e_fail visual studio 2017
¿Por qué las propiedades de dependencia? (2)
¿Por qué Microsoft siguió la ruta de crear propiedades de dependencia y objetos de dependencia en lugar de utilizar el reflejo y quizás los atributos?
Esto me ayudó a entender el razonamiento:
La principal diferencia es que el valor de una propiedad .NET normal se lee directamente de un miembro privado de su clase , mientras que el valor de DependencyProperty se resuelve dinámicamente al llamar al método GetValue () heredado de DependencyObject .
Cuando establece un valor de una propiedad de dependencia, no se almacena en un campo de su objeto, sino en un diccionario de claves y valores proporcionados por la clase base DependencyObject. La clave de una entrada es el nombre de la propiedad y el valor es el valor que desea establecer.
Las ventajas de las propiedades de dependencia son las siguientes:
Huella de memoria reducida
Es una gran disipación almacenar un campo para cada propiedad cuando piense que más del 90% de las propiedades de un control de UI generalmente se mantienen en sus valores iniciales. Las propiedades de dependencia resuelven estos problemas solo mediante las propiedades modificadas de la tienda en la instancia. Los valores predeterminados se almacenan una vez dentro de la propiedad de dependencia.
Herencia de valor
Cuando accede a una propiedad de dependencia, el valor se resuelve utilizando una estrategia de resolución de valor. Si no se establece ningún valor local, la propiedad de dependencia navega por el árbol lógico hasta que encuentra un valor. Cuando configura FontSize en el elemento raíz, se aplica a todos los bloques de texto a continuación, excepto que sobrescribe el valor.
Notificación de cambio
Las propiedades de dependencia tienen un mecanismo de notificación de cambio incorporado. Al registrar una devolución de llamada en los metadatos de la propiedad, recibirá una notificación cuando se modifique el valor de la propiedad. Esto también es utilizado por el enlace de datos.
De: WPF Tutorials .
Las propiedades de dependencia resuelven un escenario de uso diferente del que reflejarían los atributos y la resolución.
Las propiedades de dependencia proporcionan una API única y consistente para hacer cosas que las propiedades estándar no pueden manejar.
- Las clases de permiso proporcionan una gran cantidad de propiedades sin gastos generales (ya que solo se crean, estáticamente, cuando se usan, no una vez por clase). por
- El sistema de propiedad de dependencia maneja cosas como Propiedades adjuntas de manera consistente como propiedades de dependencia estándar.
- Las propiedades de dependencia proporcionan una API limpia para el seguimiento de cambios y la validación .
- Las propiedades de dependencia proporcionan herencia de valor de propiedad .
- Las propiedades de dependencia proporcionan grandes beneficios de rendimiento cuando se vinculan datos.