当type.IsGenericType= 时,我需要一些方法来获取类型的名称true.
Type t = typeof(List<String>);
MessageBox.Show( ..?.. );
Run Code Online (Sandbox Code Playgroud)
我想要的是一个弹出消息框,List显示......我该怎么做?
我正在使用反射来打印方法签名,例如
foreach (var pi in mi.GetParameters()) {
Console.WriteLine(pi.Name + ": " + pi.ParameterType.ToString());
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但它打印出基元类型为"System.String"而不是"string"和"System.Nullable`1 [System.Int32]"而不是"int?".有没有办法在代码中查找参数的名称,例如
public Example(string p1, int? p2)
Run Code Online (Sandbox Code Playgroud)
版画
p1: string
p2: int?
Run Code Online (Sandbox Code Playgroud)
代替
p1: System.String
p2: System.Nullable`1[System.Int32]
Run Code Online (Sandbox Code Playgroud) 我有以下场景,我得到一个如下所示的字符串
"System.DateTime?"
Run Code Online (Sandbox Code Playgroud)
或者
"int?"
Run Code Online (Sandbox Code Playgroud)
我希望能够做的是检索该字符串的 System.Type ,它看起来像:
{Name = "Nullable
1" FullName = "System.Nullable1[[System.DateTime, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}
现在我知道如何从字符串中检索类型我可以Type.GetType("System.DateTime")在处理不可为空类型时或typeof(DateTime?)当我知道它将为 DateTime 为空时说,但在这种情况下,我不知道什么可以为空类型可能会出现并将只接收它作为字符串。
是否可以实现像这样的方法
string GetFriendlyName(Type type) { ... }
Run Code Online (Sandbox Code Playgroud)
在.NET中,如果可能,将返回该类型的CLR别名?在这种情况下GetFriendlyName(typeof(Foo))将返回"Foo",但GetFriendlyName(typeof(int))将返回"int"而不是像MemberInfo.Name中的"Int32"
我需要获得几个对象的名称.名称不能包含它们的位(16/32/64).我也是这样做的object.GetType().Name.当我使用int作为object(int.GetType().Name)时,它返回int.但是当我使用uint时它会返回uint32.我想只得到uint.有没有比String.Replace更好的方法呢?