viral trata que moto hoy .net workflow-foundation dependency-properties

.net - trata - video viral de la moto



¿Qué es una propiedad de dependencia? (4)

Explicación sin código

Piensa en esto, de esta manera:

Todos son más o menos lo mismo

Los seres humanos tienen mucha información asociada a ellos. Innumerables cientos y miles de datos se asocian a usted: cuántos dedos tiene, cuántos dedos de los pies, cuántos genes BRCA2 tiene, etc.

Ahora este es el problema: alguien podría hacerte estas preguntas en cualquier momento, y deberías poder darles una respuesta directa.

Entonces la pregunta es: ¿cómo puedes recordar todo eso? Bueno, originalmente la gente comenzó a escribir todo esto, pero pronto se dieron cuenta de que tendrían que llevar toda la biblioteca de Alejandría en su bolsillo trasero para poder responder a todas esas preguntas: eso es demasiado para cargar.

Almacenar información común en un solo lugar

Entonces alguien tuvo una idea brillante. Notaron que la mayoría de las veces, la información es la misma. La mayoría de las personas tiene la misma información, y muy rara vez cambia. La mayoría de las personas tiene:

  • un corazón
  • una cara, etc.
  • tres genes BRCA2

No es necesario que cada persona lleve esa información. Puede almacenar toda esa información en un solo lugar , en una biblioteca central. Pero siempre hay excepciones ... si tienes alguna excepción, entonces simplemente llevas esas excepciones contigo en tu bolsillo trasero. En su mayor parte, las personas son muy parecidas: comparten los mismos valores y esto rara vez cambia. Si no tiene una excepción anotada, puede simplemente referir al entrevistador a los datos almacenados en el repositorio común.

Ejemplo: el periodista entrevista al presidente Donald Trump **

Probemos esto con un ejemplo.

Tenemos un ejemplo de Persona: Donald Trump. Un reportero de noticias le hace algunas preguntas a nuestro estimado presidente:

"Señor presidente Trump, ¿cuántos genes HIF1A tiene?"

Donald revisa su bolsillo trasero. No hay nada en la lista acerca de cuántos genes tiene. Entonces, simplemente le dice al periodista que tiene el número predeterminado que todos los demás tienen. Entonces el reportero simplemente va a la biblioteca para averiguar sobre ese detalle en particular.

"Señor Presidente Trump, ¿cuántas caras tiene?

"¡Disculpe!", Dice Donald Trump, con un fuerte golpe en el dedo, luego busca en su bolsillo trasero para comprobar si hay algo escrito allí. ¿Puede este valor resolverse localmente? Si es así, simplemente puede devolver el valor anotado en su bolsillo trasero, pero si no hay nada allí, puede simplemente dirigir el informe para que vaya a la biblioteca local y busque esa información. Pero hay un valor escrito localmente: en su bolsillo trasero hay una respuesta: tiene 2 caras. Hay una excepción aquí. Entonces no puede pedirle al reportero que consulte la biblioteca, porque esta es una excepción. Trump debe regresar rápidamente con la respuesta: 2 (noticias no falsas).

La resolución del valor en un árbol

Para simplificarlo, las cosas se resuelven primero con la persona, y luego hacia arriba, a la biblioteca, y si la información no está contenida allí, entonces la pregunta va a una autoridad superior: Dios o el monstruo de espagueti, según sea el caso. . En ese extremo, sigues yendo más y más alto hasta que obtengas una respuesta. Al final, todas las respuestas se resuelven.

Resumen

Ese es el concepto en pocas palabras. En resumen, una propiedad de dependencia es una propiedad que se resuelve localmente o sube el árbol de la interfaz de usuario, según sea el caso. La razón por la que hacemos esto es porque los elementos de la interfaz de usuario tienen cientos y cientos o propiedades que pronto devorarían su memoria si los almacenase como campos de respaldo en cada uno de ellos. Pero debido a que la mayoría de estos campos nunca o muy raramente cambian, no hay necesidad de almacenarlos como campos de respaldo, y sus valores se pueden resolver yendo por el árbol. Por supuesto, la analogía es un poco tensa, pero espero que sea útil para alguien.

Qué es una propiedad de dependencia en .Net (especialmente en el contexto de WPF). ¿Cuál es la diferencia de la propiedad regular?


La única explicación que encontré útil y bien escrita es esta: http://www.wpftutorial.net/dependencyproperties.html

Básicamente, DependencyProperties difiere de las propiedades normales en que no son solo setters / getters para los campos en la clase, sino que recuperan sus valores reales dinámicamente durante el tiempo de ejecución. El método SetValue() de DP es bastante sencillo y establece el valor local de la propiedad al valor que le asignó. Sin embargo, cuando intente obtener GetValue() desde DependencyProperty, primero buscará un valor local, si no hay ninguno (lo que es viable en DependencyProperties a diferencia de las propiedades normales) continuará subiendo el árbol de la IU lógica hasta que encuentre dicho valor . Si el marco ha llegado a la parte superior del árbol sin encontrar ningún valor local, utilizará un valor predeterminado predefinido como valor de la propiedad.

Este método permite a DependencyProperties consumir menos memoria que las propiedades normales, ya que solo los valores establecidos explícitamente por el usuario se almacenarán localmente.

Y, como se mencionó anteriormente, DependencyProperties también nos permite vincularlos en el código XAML y establecer activadores en ellos, que en propiedades normales no está permitido.

Espero haber logrado aclarar algo de la vaguedad :)


Las propiedades de dependencia son propiedades de las clases que se derivan de DependencyObject, y son especiales porque en lugar de simplemente usar un campo de respaldo para almacenar su valor, usan algunos métodos de ayuda en DependencyObject.

Lo mejor de ellos es que tienen incorporadas todas las conexiones para el enlace de datos. Si les vincula algo, lo notificarán cuando cambien.


http://techpunch.wordpress.com/2008/09/25/wpf-wf-what-is-a-dependency-property/ proporciona una buena explicación de las propiedades de dependencia tanto en el contexto de WF como de WPF.

Un experto:

Punto clave: se resuelve el valor de las propiedades de dependencia

El objetivo final de una propiedad de dependencia, como cualquier propiedad, es administrar el estado. Pero a diferencia de las propiedades .Net normales, el valor de la propiedad local no se almacena en una variable de instancia.

En su lugar, las propiedades de dependencia se registran con el marco de propiedades de dependencia y se resuelve el valor de propiedad subyacente, es decir, el valor está determinado por el marco de propiedad de dependencia en función de las reglas definidas por el registro de propiedad.