Как прочитать подпись метода?

Если я рассмотрю перегрузки, доступные для Return метод, который я могу сделать так:

[System.Reflection.Assembly]::LoadFrom("C:\...\Newtonsoft.Json.6.0.3\lib\net40\NewtonSoft.Json.dll")
[System.Reflection.Assembly]::LoadFrom("C:\...\Neo4jClient.1.0.0.662\lib\net40\Neo4jClient.dll")

$neo = new-object Neo4jClient.GraphClient(new-object Uri("http://localhost:7474/db/data"))
$q=$neo.Cypher.Match("n").Return({param($m) $m});
$neo.Cypher.Match("n").Return.OverloadDefinitions

Я вижу что-то вроде этого:

Neo4jClient.Cypher.ICypherFluentQuery [TResult] Возврат [TResult](идентификатор строки)

Neo4jClient.Cypher.ICypherFluentQuery [TResult] Возврат [TResult](выражение System.Linq.Expressions.Expression[System.Func[TResult]])

Neo4jClient.Cypher.ICypherFluentQuery [TResult] Возврат [TResult](выражение System.Linq.Expressions.Expression[System.Func[Neo4jClient.Cypher.ICypherResultItem,TResult]])

из которого я прочитал, что первая перегрузка принимает один строковый параметр, однако, как мне прочитать вторую перегрузку? он принимает выражение linq, которое [содержит | принимает] функцию без параметров, которая возвращает тип TResult?

а как на третий, где функция принимает 2 параметра? это два параметра или один параметр и тип возвращаемого значения?

как мне прочитать этот синтаксис?

2 ответа

Решение

Поэтому одна часть ответа состоит в том, что выходные данные заменяют нормальные угловые скобки квадратными скобками, так что это:

Neo4jClient.Cypher.ICypherFluentQuery[TResult] Return[TResult](string identity)

должно быть на самом деле это:

Neo4jClient.Cypher.ICypherFluentQuery<TResult> Return<TResult>(string identity)

теперь ясно, что это дженерики (см.: https://msdn.microsoft.com/en-us/library/ms379564%28v=vs.80%29.aspx)

что значит сказать что:

System.Linq.Expressions.Expression<System.Func<TResult>>

означает выражение linq, напечатанное как функция, которая возвращает TResult

Этот исходный файл должен предоставлять подписи в удобочитаемом виде.

Другие вопросы по тегам