与语言无关的显示泛型类型及其类型参数的方式?
Language-agnostic way of displaying the generic types along with their type arguments?
假设我想log/show这个类型的名字:
Dictionary<string, Dictionary<Guid, DateTime>>
首选:
1) Dictionary`2`string`Dictionary`2`Guid`DateTime
2) Dictionary`2(string, Dictionary`2(Guid, DateTime))
3) Dictionary< string , Dictionary < Guid, DateTime>>
JVM 是如何解决这个问题的?
另见:
有点长,但是typeof(Dictionary<string, Dictionary<Guid, DateTime>>).FullName
是:
System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.Dictionary`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
typeof()
运算符returns一个RuntimeType
,也就是一个.NETclass。所以 FullName
是一种 .NET 的 属性,所以它是官方的:-)
如果您尝试执行 Type.GetType(thatstring)
,您将获得正确的类型:-)
更紧凑的版本,没有程序集短名称,可以通过以下方式获得:typeof(Dictionary<string, Dictionary<Guid, DateTime>>).ToString()
。这也可以与 Type.GetType(...)
一起使用
System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.Dictionary`2[System.Guid,System.DateTime]]
请注意 Type.GetType
这种格式有一个限制:
The assembly-qualified name of the type to get. See AssemblyQualifiedName. If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.
如果你有兴趣,这里有完整的格式: AssemblyQualifiedName
假设我想log/show这个类型的名字:
Dictionary<string, Dictionary<Guid, DateTime>>
首选:
1) Dictionary`2`string`Dictionary`2`Guid`DateTime
2) Dictionary`2(string, Dictionary`2(Guid, DateTime))
3) Dictionary< string , Dictionary < Guid, DateTime>>
JVM 是如何解决这个问题的?
另见:
有点长,但是typeof(Dictionary<string, Dictionary<Guid, DateTime>>).FullName
是:
System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.Dictionary`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
typeof()
运算符returns一个RuntimeType
,也就是一个.NETclass。所以 FullName
是一种 .NET 的 属性,所以它是官方的:-)
如果您尝试执行 Type.GetType(thatstring)
,您将获得正确的类型:-)
更紧凑的版本,没有程序集短名称,可以通过以下方式获得:typeof(Dictionary<string, Dictionary<Guid, DateTime>>).ToString()
。这也可以与 Type.GetType(...)
System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.Dictionary`2[System.Guid,System.DateTime]]
请注意 Type.GetType
这种格式有一个限制:
The assembly-qualified name of the type to get. See AssemblyQualifiedName. If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.
如果你有兴趣,这里有完整的格式: AssemblyQualifiedName