相关疑难解决方法(0)

C#:"漂亮"的类型名称功能?

在泛型类型的情况下,System.Type类的名称属性返回奇怪的结果.有没有办法以更接近我指定方式的格式获取类型名称?例:typeof(List<string>).OriginalName == "List<string>"

c# generics types pretty-print

19
推荐指数
3
解决办法
4295
查看次数

一个更整洁的GetType().ToString()用于封闭的泛型

我不敢相信之前没有被问过,但因为我无法在stackoverflow haystack中找到这个特殊的"针",我问它.

我想要一个更简洁的GetType()实现.ToString()用于封闭的泛型类型.neater我的意思是我希望ToString()调用以我将输入到开发环境中的格式返回一个字符串.

封闭泛型上的默认GetType().ToString()将放置` n,其中n是类型数,并使用[]代替<>.

无论如何......代码.

给出以下课程:

A a = new A();
C<A> c = new C<A>();
D<A, B> d = new D<A, B>();
E<B, C<A>, D<A, B>> e = new E<B, C<A>, D<A, B>>();
Run Code Online (Sandbox Code Playgroud)

默认.ToString()返回:

AAA.Events.A
AAA.Events.C`1[AAA.Events.A]
AAA.Events.D`2[AAA.Events.A,AAA.Events.B]
AAA.Events.E`3[AAA.Events.B,AAA.Events.C`1[AAA.Events.A],AAA.Events.D`2
Run Code Online (Sandbox Code Playgroud)

我写了一些基本的旧学校(pre linq)代码来制作:

AAA.Events.A
AAA.Events.C<AAA.Events.A>
AAA.Events.D<AAA.Events.A,AAA.Events.B>
AAA.Events.E<AAA.Events.B,AAA.Events.C<AAA.Events.A>,AAA.Events.D<AAA.Events.A,AAA.Events.B>>
Run Code Online (Sandbox Code Playgroud)

但我真的希望它回归:

A
C<A>
D<A,B>
E<B,C<A>,D<A,B>>
Run Code Online (Sandbox Code Playgroud)

这是我用来表明我的意图的伪劣代码:

public static string NeaterString(this Type t)
{
    string neater = t.ToString();
    if (neater.Contains('`'))
    {
        while (neater.Contains('`'))
        {
            neater = neater.Remove(neater.IndexOf('`'), 2);
        }
        return …
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
1932
查看次数

获取类型名称但是使用指定的使用来解决它

有1000个帖子告诉我如何获得TypeName,比如

获取C#中没有完整命名空间的类型名称

获取类型名称

还有很多,而且一切正常,但我需要使用提供的方法解决TypeName问题.

例如,我使用以下内容:

using Foo = System.Collections.Generic;
Run Code Online (Sandbox Code Playgroud)

现在以下调用获取名称:

var x = typeof (Foo.List<>);
var y = x.Name;
Run Code Online (Sandbox Code Playgroud)

我想得到输出

Foo.List`1
Run Code Online (Sandbox Code Playgroud)

而不仅仅是

List`1
Run Code Online (Sandbox Code Playgroud)

这是可能的,还是唯一的选择字符串操作?

c# reflection

0
推荐指数
1
解决办法
66
查看次数

标签 统计

c# ×3

generics ×1

pretty-print ×1

reflection ×1

types ×1