I BitFactory Protokollierung bin mit, die eine Reihe von Methoden, wie diese macht:Erzwingen meinen Code meine Erweiterungsmethode verwenden
public void LogWarning(object aCategory, object anObject)
ich eine Erweiterungsmethode haben, dass dies ein bisschen schöner für unsere Protokollierung macht benötigt:
public static void LogWarning(this CompositeLogger logger,
string message = "", params object[] parameters)
die nur einige gemeinsame Holzeinschlag hüllt, und bedeutet, dass ich wie anmelden können:
Logging.LogWarning("Something bad happened to the {0}. Id was {1}",foo,bar);
Aber wenn ich nur eine Zeichenfolge in meinem params object[]
habe, dann wird meine Erweiterungsmethode nicht aufgerufen, stattdessen wird die ursprüngliche Methode gewählt.
Abgesehen davon, dass ich meine Methode etwas anderes nenne, gibt es eine Möglichkeit, das zu verhindern?
Klassenmethoden haben immer Vorrang Über Erweiterungsmethoden, also würde ich nein sagen. Aber vielleicht kennt jemand eine Workaround. – Gorpik
Erweiterungsmethoden (mit ähnlich benannten Nicht-Erweiterungsmethode (n)), optionale Argumente, * und * 'params' alle in einer Methode? Sie mögen es, den Compiler zu verwirren, oder? –