Ist es möglich, eine Zuordnung in einem Visual Studio (2013) -Klassendiagramm zu konfigurieren, damit beim Erstellen des Codes eine Eigenschaft mit dem Typ List<MyClass>
oder erstellt wird sogar ICollection<MyClass>
anstatt es ist Standard IEnumerable<MyClass>
?Visual Studio Architecture Codegenerierung - Create List <type> statt IEnumerable <type>
Antwort
Ja, es ist möglich, den Ausgang zu ändern. Visual Studio verwendet T4-Vorlagen zum Generieren von Code aus den Architekturwerkzeugen.
Sie können die Vorlagen in C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Architecture Tools \ Extensibility \ Templates \ Text (entfernen (x86) wenn Sie eine 32-Bit-Maschine).
Verwenden Sie die folgenden Schritte, um den generierten Code IList<T>
anstelle des Standard zu ändern IEnumerable<T>
:
- Sichern Sie alle Vorlagen in ein anderes Verzeichnis auf Ihrem Rechner (besser sicher als sorry)
- öffnen CSharpHelper .t4 aus dem obigen Verzeichnis
die Methode
ElementType(IType type, bool isEnumerable = false)
namens Locateprivate 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; }
Ändern Sie die Zeichenfolge IEnumerable, was auch immer Sie wollen
- Speichern, um die T4-Datei und generieren Sie den Code aus Visual Studio
Sie können (mein Kommentar beginnend mit SO sehen) sogar Ihre eigenen T4 Vorlagen schreiben und instruieren Visual Studio, um sie beim Generieren von Code zu verwenden, mehr Details unter MSDN.
- 1. Visual Studio Visualizer für IEnumerable <string>
- 2. <? Php statt <?
- 3. Liste <int> zu IEnumerable <IComparable>
- 4. IEnumerable <IEnumerable <T>> zu IEnumerable <T> LINQ mit
- 5. Visual Studio Codegenerierung - Verwenden Sie Großtypnamen
- 6. Linq wo zwischen IEnumerable und List <>
- 7. Holen Sie sich ein IEnumerable <T> aus einem IEnumerable <IEnumerable <T>>
- 8. Warum implementiert List <T> IList <T>, ICollection <T> und IEnumerable <T>?
- 9. Pivot IEnumerable <T>
- 10. IEnumerable <> zu IList <>
- 11. Unterschied zwischen IEnumerable <T> .Reverse & List <T> .Reverse
- 12. konvertieren/Cast IEnumerable IEnumerable <T>
- 13. IEnumerable <object> zur Liste <object>
- 14. EntitySet <IEnumerable <T>> zu IEnumerable <T>
- 15. LINQ: IEnumerable <KeyValuePair <Sometype, IEnumerable <OtherType> >> Auswahl
- 16. IEnumerable <IResult> - Caliburn micro
- 17. Umwandlung Aufgabe <DbSet<T>> zu Aufgabe <IEnumerable <T>>
- 18. Warum 1 << 4 statt 16?
- 19. Warum akzeptiert eine Funktion IEnumerable <interface> IEnumerable <class> nicht?
- 20. IEnumerable <string> bespannen
- 21. XML IEnumerable <T>
- 22. IEnumerable <T> Frage
- 23. zu IEnumerable <T>
- 24. Verkettung mehrerer IEnumerable <T>
- 25. LINQ Zusammenführen Liste <IEnumerable <T>> in einem IEnumerable <T> durch eine Regel
- 26. Wie man ein `IEnumerable <Unknown T>` auf `IEnumerable <Whatever>`
- 27. asp.net MVC C# List <> entfernen
- 28. Unterschied zwischen Liste <string> lst = new List() und List <> lst = new List()
- 29. List <> eigene comparer
- 30. Vereinbaren List <> aufsteigend
Excellent vielen Dank für eine so detaillierte Antwort und vor allem für den Link. –
Sie begrüßen Andrew. – user3373870