Ich mache eine Abfrage auf ein MethodInfo[]
, wo ich versuche, alle Methoden zu finden, die einen Rückgabetyp von void
haben, und nur einen Parameter von einem bestimmter Typ . Ich möchte es auf die minimalistischste und kürzeste Art und Weise tun.
Eine Möglichkeit wäre:
%Vor%oder
%Vor% Aber es gibt einen redundanten GetParameters
-Aufruf - Ein Anruf sollte ausreichen. Also dachte ich, ich könnte das auf einen anonymen Typ zwischenspeichern:
Aber es hat nicht funktioniert, ich habe Fehler, die sagen, dass es keine Length
oder einen Indexer für den anonymen Typ p
gibt, der vom Typ ParameterInfo[]
Ist das die kürzeste Art, diese Abfrage zu schreiben? Wenn ja, wie kann ich den anonymen Typ zum Funktionieren bringen? wenn nicht, was ist der kürzeste Weg, dies zu tun? (Erhalten Sie alle Methoden der void return, und eines Param, wo dieser Parameter von einem bestimmten Typ ist)
Danke für jede Hilfe:)
Mit der Abfragesyntax können Sie eine neue Bereichsvariable einführen, die Methodenparameter
enthält %Vor%Methodensyntax ist nicht so schön:
%Vor%Ich stimme Sergey Berezovskiy zu, dass die Methodensyntax, die er zeigte, weniger schön ist als die Abfragesyntax. Aber die Methodensyntax kann umgeschrieben werden:
%Vor%und eine normale Methode:
%Vor%Das OP wollte eine kurze Lösung. Ob das kurz ist, hängt davon ab, wie man es betrachtet. Die Linq-Abfrage ist kürzer und anonyme Typen werden nicht erstellt.
Diese Lösung erleichtert auch das Debugging und ist auch einfacher zu erweitern. Ein Beispiel für Letzteres könnte sein:
%Vor%und
%Vor%Tags und Links .net c# linq anonymous-types where