È possibile configurare un'associazione in un diagramma di classe di Visual Studio (2013) in modo che quando il codice viene generato da esso crei una proprietà con tipo List<MyClass>
o anche ICollection<MyClass>
anziché il valore predefinito di IEnumerable<MyClass>
?Generazione codice architettura Visual Studio - Crea elenco <type> anziché IEnumerable <type>
risposta
Sì, è possibile modificare l'uscita. Visual Studio utilizza i modelli T4 per generare codice dagli strumenti di architettura.
È possibile trovare i modelli in C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Architecture Tools estensibilità \ Templates \ Text \ (rimuovere (x86) se avete una macchina a 32 bit).
utilizzare le seguenti operazioni per modificare il codice generato per IList<T>
al posto di quello predefinito IEnumerable<T>
:
- Eseguire il backup di tutti i modelli in una directory diversa sulla vostra macchina (meglio prevenire che curare)
- Aperto CSharpHelper .t4 dalla directory sopra
Individuare il metodo chiamato
ElementType(IType type, bool isEnumerable = false)
private static string ElementType(IType type, bool isEnumerable = false) { string text = string.Empty; if (type == null) { text = "object"; } else { text = TypeName(type); } if(!string.IsNullOrWhiteSpace(text) && isEnumerable) { //SO Change IEnumerable to IList here text = "IEnumerable<" + text + ">"; } return text; }
modificare la stringa IEnumerable a quello che vuoi (vedi il mio commento a cominciare SO)
- Salvare il file T4 e generare il codice da Visual Studio
Si può anche scrivere i propri modelli T4 e istruire studio visivo per usarli durante la generazione del codice, maggiori dettagli su MSDN.
- 1. Elenco <int> a IEnumerable <IComparable>
- 2. Visual Studio Visualizer per IEnumerable <string>
- 3. Casting IEnumerable <T> a Elenco <T>
- 4. IEnumerable <> to IList <>
- 5. IEnumerable <IEnumerable <T>> per IEnumerable <T> utilizzando LINQ
- 6. Flatten IEnumerable <IEnumerable <>>; comprensione generici
- 7. LINQ unisce Elenco <IEnumerable <T>> in un IEnumerable <T> con qualche regola
- 8. Elenco <T> vs IEnumerable <T> in foreach
- 9. Può essere vantaggioso per un metodo restituire IOrderedEnumerable <T> anziché IEnumerable <T>?
- 10. Conversione da IEnumerable <IEnumerable <string>> per ICollection <T>
- 11. ASP.NET MVC 3 Elenco <T> in IEnumerable <SelectListItem>
- 12. Perché IEnumerable <T> è definito come IEnumerable <out T>, non IEnumerable <T>
- 13. Implementare IEnumerable <T> Per un elenco Wrapper
- 14. C# Impossibile convertire da IEnumerable <Base> a IEnumerable <Derived>
- 15. Perché una funzione che accetta IEnumerable <interface> non accetta IEnumerable <class>?
- 16. IEnumerable <T> conversione
- 17. Perché non posso trasmettere un elenco IEnumerable <T> a BindingList <t>?
- 18. Convertire IEnumerable <T> a string []
- 19. Come utilizzare IEnumerable <String> nel codice di documentazione
- 20. Elenco di espressioni <Func <T, TProperty >>
- 21. IEnumerable <T> e IQueryable <T> chiarimenti?
- 22. XML per IEnumerable <T>
- 23. Uscite Java Transformer <e> anziché <>
- 24. Architettura Visual Studio 2015 Android NDK
- 25. Trasmetti da IEnumerable a IEnumerable <object>
- 26. Come concatenare due IEnumerable <T> in un nuovo IEnumerable <T>?
- 27. Verificare se IEnumerable <object> è IEnumerable <int>
- 28. Come può esistere un elenco senza <T> dopo?
- 29. Converti elenco <DerivedClass> in elenco <BaseClass>
- 30. Come funziona IEnumerable <T>. Reverse?
Eccellente grazie mille per una risposta così dettagliata e soprattutto per il collegamento. –
Accogli Andrew. – user3373870