Mentre implemento il pattern MVVM con WPF, sto riscontrando che Resharper mi avvisa spesso che alcune proprietà non vengono mai utilizzate nei miei ViewModels. Il problema è che vengono utilizzati, ma solo dal sistema di associazione dei dati. Qualcun altro ha riscontrato questo fastidio e c'è un modo per aiutare Resharper a rendersi conto che queste proprietà vengono effettivamente utilizzate? Sono contento, almeno, che VS 2010 si renda conto correttamente che i membri con tag [Import] non "saranno sempre nulli", ma spero di poter risolvere anche questo problema.Avvisi del reporter con MVVM
risposta
È possibile utilizzare le annotazioni esterne per indicare che il metodo di ricondizionamento è utilizzato e quindi non avvisare. consultare la documentazione ReSharper su quel here
che serve per decorare tali metodi con [UsedImplicitlyAttribute]
Prima di utilizzare l'attributo che si vede:
e poi dopo aver applicato l'attributo:
[UsedImplicitly(ImplicitUseTargetFlags.WithMembers)]
class NotUsed
{
public int Field1 { get; set; }
public int Field2 { get; set; }
}
Una soluzione greggio potrebbe essere quella di disattivare l'avviso del tutto:
Sotto ReSharper> Opzioni> Code Inspection> Inspection Gravità, impostare il livello di avviso per questa voce su "Non mostrare".
Questo ovviamente non è l'ideale, ma dipende dal livello di fastidio con i falsi positivi.
È possibile provare due diverse opzioni. Uno è quello di ridurre la severità dell'ispezione del Resharper su "Suggerimento". L'altra opzione è quella di utilizzare l'elemento "Sopprimi l'ispezione con commento". Il programma di ricerca fornisce le proprietà che generano l'avviso che si sa che vengono utilizzate. Personalmente, andrei con la riduzione della gravità a "Suggerimento".
Ridurre il livello di gravità in Hint funziona abbastanza bene per ora. Mi dava fastidio vedere linee arancioni irrisolte alla destra delle mie lezioni. –
Le proprietà sono pubbliche o interne? Nella mia esperienza, ReSharper non mette in guardia sul pubblico (poiché non è in alcun modo possibile che i membri non vengano utilizzati esternamente) ma avviserà i membri interni poiché possono essere utilizzati solo all'interno di tale assembly (InternalsVisibleTo nonostante)
Sono pubblici e sono stato in grado di modificare le impostazioni in Hint solo per le proprietà pubbliche. Verrà comunque visualizzato un avviso per proprietà private/interne, che va bene. L'avviso viene visualizzato nel contesto dell'analisi a livello di soluzione poiché "l'accesso automatico della proprietà implementato non viene mai utilizzato". –
Utilizzare
<UserControl
...
xmlns:vm="clr-namespace:YourProject.ViewModels" mc:Ignorable="d"
d:DataContext="{d:DesignInstance vm:SomeClassViewModel}">
It 'stick's View to Model. In View è possibile visualizzare le proprietà del modello e viceversa - nelle proprietà del modello deve essere utilizzato.
Ciò non aiuta quando il modello di vista è associato automaticamente alla vista tramite l'attributo x: Name come in molti framework MVVM. – Nathan
Questa sembra la soluzione migliore per me. –
Questo a causa della natura debolmente tipizzata dei binding XAML.
Per rendere ReSharper in grado di risolvere le proprietà della VM che si utilizza dalla vista XAML, è necessario introdurre annotazioni del tipo di contesto dei dati per {Binding}
s nel markup. Vedere la sezione "Assistenza di rilegatura" in this blog post per i dettagli. Otterrai il corretto supporto per l'analisi, la navigazione e il refactoring quando ReSharper conoscerà il tipo di contesto dati.
ReSharper sa anche modalità circa OneWay
/OneWayToSource
/TwoWay
attacchi e segna proprietà getter/setter/entrambi di accesso usati rispettivamente.
- 1. Crash Reporter per Cocoa app
- 2. MVVM con Knockout.js
- 3. Implementazione del proprio MVVM rispetto all'utilizzo di un framework MVVM?
- 4. Personalizzato Jasmine reporter in test Goniometro
- 5. PasswordBox con MVVM
- 6. async Task.Run con MVVM
- 7. Pattern MVVM con PySide
- 8. Violazione del pattern MVVM: MediaElement.Play()
- 9. Come disattivare gli avvisi del compilatore con nvcc
- 10. clang scan-build report con avvisi del compilatore?
- 11. MVVM e la proprietà SelectedText del TextBox
- 12. Campioni WVF MVVM con database
- 13. Scaffolding per WPF con MVVM?
- 14. autotools: abilita gli avvisi del compilatore
- 15. MVVM Foundation vs MVVM Toolkit
- 16. Avvisi con Proguard (con librerie esterne)
- 17. Avvisi di revisione del codice TFS
- 18. Disattivare gli avvisi del compilatore per riga
- 19. Disabilita avvisi di analisi del codice .NET
- 20. Uso del comportamento in MVVM WPF?
- 21. Applicazione del pattern MVVM in un QtQuick
- 22. Quali sono i problemi del pattern MVVM?
- 23. Visualizzazione rapida Best practice avvisi avvisi
- 24. Test di avvisi javascript con Jasmine
- 25. Prerendering/hiding on load con WPF MVVM?
- 26. Disabilita condizionalmente gli avvisi con qmake/gcc?
- 27. Come formattare gli avvisi catturati con logging.captureWarnings?
- 28. MVVM standardizzazione
- 29. WPF OpenFileDialog con lo schema MVVM?
- 30. Eseguire nosetests con avvisi come errori?
Grazie, questa è un'informazione molto utile. –
C'è anche un modo per applicare questo attributo a tutti i membri di, ad esempio, un'interfaccia? Ho provato l'ImplicituseTargetFlags, ma non ha avuto successo. – Matthias
@ Matthias Koch questo funziona per me usando 'ImplicitUseTargetFlags.WithMembers' - per favore vedi la mia risposta aggiornata sopra dove ho fornito gli screenshot. – wal