Frage an implicit, operators, c#, .net – Wie gelingt es, "Find Usages" mit impliziten Operatormethoden zum Laufen zu bringen?

6

Ich mochte implizite Operatoren nie (bevorzuge Erweiterungsmethoden), da es schwierig ist, visuell zu erkennen, wann diese Umwandlung im Code stattfindet.

Stellen Sie sich vor, Sie haben ein Beispiel wie das folgende:

public static implicit operator Deal(string dealAsXml)
{
    //convert the xml into Deal object
}

Der oben aufgeführte implizite Operator hilft Ihnen dabei, einen Deal im XML-Format in ein Deal-Objekt umzuwandeln.

Wenn Sie mit der rechten Maustaste auf eine Methode klicken, können Sie normalerweise "Find Usages" (oder Alt + F7) verwenden, was sehr hilfreich ist. Gibt es etwas Ähnliches für implizite Operatoren?

Ich denke, das ist ein weiterer Grund, die Extensions-Methoden zu verwenden, wo es möglich ist.

Deine Antwort

1   die antwort
11

aber ich bin mir nicht sicher. Wenn ich Verwendungen finden muss, tue ich es auf die arme Art und Weise und entferne den impliziten Operator, kompiliere neu und finde die Fehler.

Ich nehme an, dass der Compiler theoretisch einen Fall übersehen könnte, wenn er einen anderen impliziten Operator verwenden kann (oder zu einer Überladung einer Methode vom Typ "Objekt" wechseln kann), aber dies funktioniert in der Regel für meine Verwendungen. Ich bin mir sicher, dass es eine bessere Lösung gibt, aber es hat bisher für mich funktioniert.

EDIT: Hatte gerade einen Gedanken und testete ihn. Markieren Sie Ihren impliziten Operator als[Obsolete] wird tatsächlich zu einer Compiler-Warnung führen, wo immer Sie es verwenden! Ich nehme an, dies wird die Eckfälle auffangen, in denen es andere gültige Überladungen gibt, die Sie vermissen würden, wenn Sie den impliziten Operator vollständig entfernt hätten.

Das ist gut, Chris. Auf diese Weise kannst du zumindest gewarnt werden (ohne den Build zu brechen). Ich werde warten, wenn jemand eine bessere Idee hat. Bek Raupov
Resharper findet auch keine Verwendung impliziter Operatoren. Peter Ritchie
Sicher; Ich würde gerne wissen, ob es eine Möglichkeit gibt, es durch den Standard prüfen / melden zu lassenFind Symbol Results Fenster, wenn nur Konsistenz im Workflow zu haben und nicht Code zu ändern. Insbesondere, wenn Sie in Bibliotheken von Drittanbietern suchen, in denen Sie das veraltete Attribut nicht selbst hinzufügen können. Chris Sinclair
auch auf die gleiche Weise des armen Mannes getan. :) Das ist ziemlich entmutigend, wenn Sie große Lösung haben Bek Raupov

Verwandte Fragen