Verkürzen Sie diese LINQ-Abfrage mit Hilfe eines anonymen Typs?

8

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:

%Vor%

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

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:)

    
vexe 03.01.2014, 08:40
quelle

2 Antworten

11

Mit der Abfragesyntax können Sie eine neue Bereichsvariable einführen, die Methodenparameter

enthält %Vor%

Methodensyntax ist nicht so schön:

%Vor%     
Sergey Berezovskiy 03.01.2014, 08:42
quelle
2

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%     
Alex Siepman 04.01.2014 19:16
quelle

Tags und Links