.NET 2.0/C#中泛型方法的元数据的签名格式是什么?

Lee*_*aks 3 .net c# clr cil

例如,out在C#中使用关键字的方法中的参数将显示在元数据签名中,前面带有&符号&.我正在尝试为通用方法创建签名,但我不想使用元数据API来解决这个问题,当然它已在某处记录了吗?

这是我在Socket类上对BeginReceiveFrom的意思的一个例子:

        System.IAsyncResult([]System.Byte,System.Int32,System.Int32,
    System.Net.Sockets.SocketFlags,&System.Net.EndPoint,
System.AsyncCallback,System.Object)
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

对于未构造的类型,有一个反引号后跟参数的数量,例如

List`1
Dictionary`2
Run Code Online (Sandbox Code Playgroud)

从ECMA 335,第10.7.2节:

10.7.2类型名称和arity编码

符合CLS的通用类型名称使用格式名称['arity]进行编码,其中[...]表示严重重音字符__CODE__ 和arity一起是可选的.编码名称应遵循以下规则:

  1. name应为不包含"`"字符的ID(参见Partition II).
  2. arity指定为无符号十进制数,不带前导零或空格.
  3. 对于普通泛型类型,arity是在类型上声明的类型参数的数量.
  4. 对于嵌套泛型类型,arity是新引入的类型参数的数量.

(请注意,由于降价,我无法在引号中使用反引号 - 因此是撇号!)

不确定构造的类型......