Как прочитать подпись метода?
Если я рассмотрю перегрузки, доступные для 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
Этот исходный файл должен предоставлять подписи в удобочитаемом виде.