Ich implementiere eine ConvertingCollection, die eine Sammlung von konvertierten Elementen (B) bietet, mit einer Live-Sammlung von Originalartikeln (A). Die Sammlung B würde alle Änderungen widerspiegeln, die in Sammlung A auftreten. Das Ziel besteht darin, sie in MVVM als eine Sammlung von ViewModels mit einer Sammlung von Modellen zu verwenden, aber ich glaube, dass sie in vielen verschiedenen Kontexten verwendet werden könnte.ivalueconverter vs system.converter vs Delegat
Diese Klasse erfordert vom Benutzer eine Möglichkeit, Objekte von einem Typ A in einen Typ B zu konvertieren. Ich kann verschiedene Wege finden, um fortzufahren, aber ich weiß nicht genug über ihre Unterschiede, um zu entscheiden, was der beste Ansatz ist :
ich für ein
IValueConverter
fragen konnte, die WPF-verwandt zu sein scheint. Jetzt hindert nichts daran, es woanders zu verwenden, aber es könnte verwirrend sein. Obwohl meine Klasse zuerst in einem WPF-Kontext verwendet werden soll, ist sie generisch genug, um sie auf viele andere Kontexte anzuwenden. Darüber hinaus wirdIValueConverter
von Objekt zu Objekt konvertiert, was bedeutet, dass das Streaming nach dem Downstream erfolgt und kein Crash während der Erstellung stattfindet.Ich könnte für eine
System.Converter
entscheiden. Dies ermöglicht die Verwendung vonasync
und, noch angenehmer, kann ich nach bestimmten Typen fragen. Außerdem ist dies, soweit ich weiß, nicht im Zusammenhang mit WPF.Schließlich könnte ich einfach mit einem Delegaten TypIn => TypeOut tun gehen. Keine einzugebende Klasse, stark typisiert, und der Benutzer könnte einen beliebigen IValueConverter, Converter oder eine benutzerdefinierte Funktion verwenden, um den Delegaten zu implementieren.
Nun, ich habe keine Ahnung, warum die Converter
und IValueConverter
existieren, wenn alles mit nur Delegierten behandelt werden könnten. Also ich denke ich vermisse dort etwas.
Kann mir bitte jemand helfen? Vielen Dank im Voraus, Mit freundlichen Grüßen
Guter Punkt, ich habe nicht über diese Option nachgedacht. Nichtsdestoweniger impliziert dies, dass die Konvertierung in allen Projekten des Benutzers angewendet wird, nicht nur bei der Verwendung meiner Klasse ... Ich werde meine Hauptnachricht bearbeiten, um mehr über den Kontext zu erfahren. –