如何阅读方法签名?

How to read method signature?

如果我查看可用于 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] Return[TResult](string identity)

Neo4jClient.Cypher.ICypherFluentQuery[TResult] Return[TResult](System.Linq.Expressions.Expression[System.Func[TResult]] expression)

Neo4jClient.Cypher.ICypherFluentQuery[TResult] Return[TResult](System.Linq.Expressions.Expression[System.Func[Neo4jClient.Cypher.ICypherResultItem,TResult]] expression)

我从中读到第一个重载采用单个字符串参数,但是,如何读取第二个重载?它需要一个 linq 表达式,它 [包含|接受] return 类型 TResult?

的无参数函数

第三个函数有两个参数呢?是两个参数还是一个参数加一个return类型?

如何阅读此语法?

This source file 应以可读的方式提供签名。

所以答案的一部分是输出用方括号替换了正常的尖括号,所以这个:

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

表示类型为 returns TResult

的函数的 linq 表达式