Why DependencyProperties e non supporto per la lingua nativa?

1

Con l'avvento di WPF e MVVM Microsoft ha introdotto l'interfaccia DependencyProperties e INotifyPropertyChange per fornire un modo per implementare l'approccio "reattivo" utilizzato con tali tecnologie.

Purtroppo entrambi questi costrutti sono molto prolissi, richiedono molto standard, sono maldestri da usare, non sono poi così sicuri dal momento che richiedono molto uso di "stringhe magiche".

Quindi ecco la domanda: perché non hanno messo queste funzionalità direttamente nel linguaggio - perché non hanno creato un nuovo tipo di proprietà create con una semplice parola chiave, fornendo roba utile di DependencyProperties (come gli eventi sul cambiamento e così via ...).

Cosa stavano fermando loro?

    
posta mrpyo 26.04.2013 - 22:48
fonte

2 risposte

2

Le proprietà di dipendenza sono specifiche per WPF. Per quanto ne so, anche WinRT (che è basato su XAML, proprio come WPF) non li usa. Quindi, stai proponendo di aggiungere una funzione che non sarebbe affatto utile per le persone che sviluppano applicazioni ASP.NET, servizi Windows, servizi Web, applicazioni WinRT, ecc. Questo è il punto contro questa funzionalità.

Inoltre, non mi è chiaro come esattamente funzionerebbe. Come imposteresti il valore predefinito della proprietà? O PropertyChangedCallback ? Che dire delle proprietà allegate? Se la funzione che stai proponendo non fosse in grado di gestire tutto ciò, sarebbe molto meno utile. Se lo facesse, non ho idea di come sarebbe la sintassi, ma dubito che si adatterebbe bene con il resto del C #.

E questa funzione in realtà non aggiunge molto, ma rende solo un po 'più comodo il codice.

Tutto questo mi dice che una tale caratteristica non varrebbe la pena, considerando che sarebbe un cambiamento relativamente complicato che sarebbe utile solo in un sottoinsieme relativamente piccolo di programmi e anche in quelli che non sarebbero effettivamente utili molto.

    
risposta data 27.04.2013 - 01:25
fonte
0

Direi che la loro ragione potrebbe essere: dover supportare quel supporto linguistico anche molto tempo dopo che WPF è morto.

I ViewModels non dovrebbero contenere alcuna logica, quindi qualsiasi codice di implementazione è praticamente "solo scrittura". E con il supporto di snippet nelle proprietà di dipendenza di scrittura di Visual Studio non è più difficile rispetto alla scrittura di proprietà regolari: propdp tab tab . Sostituisci lo snippet con uno usando una lambda al posto della stringa magica (come questo google trovato per me ) e tu sei a posto.

Il supporto linguistico non migliorerebbe molto su questo, vero?

    
risposta data 26.04.2013 - 23:19
fonte

Leggi altre domande sui tag