C # Func Delegierte in der Bibliothek

8

Der generische Func & lt; & gt; und Aktion & lt; & gt; Delegierte von späteren Versionen von .NET sind sehr ansprechend und es wurde an vielen Stellen demonstriert, dass diese in Code Targeting .NET 2.0 problemlos neu erstellt werden können, z. B. hier .

Aus der Perspektive einer Bibliothek, die auf .NET 2.0 abzielt, die von Anwendungen verwendet werden kann, die auf einer höheren Version von .NET basieren, wie stapelt sich dies. Ist das Implementieren dieser "Kompatibilitätsschicht" in der Bibliothek ein absolutes Konfliktkriterium (sowohl in Bezug auf die private als auch die öffentliche Schnittstelle), oder gibt es Möglichkeiten, dies unabhängig von dem Zielframework zu machen, auf dem die konsumierende Anwendung aufbaut?

Wenn dies nicht der Fall ist, wäre es besser, entweder: A) Definieren Sie einen identischen Satz von parametrisierten Delegaten mit unterschiedlichen Namen? oder.. B) Halten Sie sich strikt an die .NET 2.0-Konvention und definieren Sie neue Delegattypen, so wie ich sie brauche?

    
Justin Aquadro 28.06.2011, 01:55
quelle

1 Antwort

6

Die Wahrheit ist, dass Func<> und Action<> eine gute Idee sind. Sie machen Ihren Code viel einfacher zu lesen und vermeiden eine schockierende Menge unordentlicher Delegiertenerklärungen. Deshalb möchten Sie sie verwenden .

Sie haben also diesen wirklich ansprechenden Programmierstil, den Sie verwenden wollen. Es ist eine Standardtechnik, die jetzt fast überall anstelle der alten verwendet wird, aber Sie können sie nicht verwenden, weil Sie auf eine ältere Version des Frameworks abzielen. Was sollten Sie tun?

Sie haben drei Möglichkeiten:

  1. Verwenden Sie den vor der Funktion
  2. gebräuchlichen Programmierstil
  3. Fügen Sie die Funktion Ihrem eigenen Code im Geiste hinzu, aber mit nicht widersprüchlichen Namen
  4. Fügen Sie das Feature zu Ihrem eigenen Code mit den "echten" Namen hinzu, aber in Ihrem eigenen Namensraum

Die Verwendung des alten Programmierstils gibt alle Vorteile auf, die wir von diesem Feature zu schätzen gelernt haben. Das ist ein großes Opfer. Aber vielleicht sind all Ihre Mitentwickler an diesen Stil der Programmierung gewöhnt.

Die Verwendung der Funktion mit nicht widersprüchlichen Namen erscheint vernünftig genug. Die Leute werden in der Lage sein, den Code zu lesen und von den Funktionen zu profitieren, aber niemand wird verwirrt sein, dass sie etwas zu sein scheinen, was sie nicht sind. Wenn Sie endlich zum Upgrade bereit sind, müssen Sie die Namen anpassen. Glücklicherweise macht Strg + R, Strg + R das sehr einfach.

Wenn Sie die Funktion mit den gleichen Namen wie die Standardfunktion verwenden, bedeutet dies, dass Ihr Code auf eine ältere Version abzielen kann, aber scheinbar neuere Funktionen verwendet. Scheint wie ein Gewinn / Gewinn. Dies kann jedoch zu Verwirrung führen, und Sie müssen darauf achten, dass Ihre Typen nicht anderen unwissenden Assemblys ausgesetzt sind, was möglicherweise zu Kompilierungsproblemen auf Quellenebene führen kann. Also musst du vorsichtig sein und klar darüber sein, was passiert. Aber es kann effektiv arbeiten.

Sie müssen wählen, welcher Ansatz in Ihrer Situation sinnvoll ist, abhängig von Ihren Bedürfnissen. Es gibt keine richtige Antwort für alle, nur Kompromisse.

    
Rick Sladkey 28.06.2011, 02:43
quelle

Tags und Links