我们怎样才能得到List 来自System.Collections.Generic.List`1 [System.String]? [关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们怎样才能得到List 来自System.Collections.Generic.List`1 [System.String]? [关闭]相关的知识,希望对你有一定的参考价值。

我正在使用T4模板生成c#类。我需要从另一个类Class1生成阴影类。

在Class1中,我有TypeAttribute,它可以告诉Class1中属性的类型。

通过使用反射我得到TypeAttribute中指定的类型。

我没有得到任何标准方法来获取非拼写格式的泛型类型。

我需要来自System.Collections.Generic.List`1 [System.String]的List<String>

我正在使用T4Toolbox进行T4Template。

T4Toolbox是否提供任何此类功能来处理泛型,同时生成c#代码?

谢谢。

答案

这是我最近在玩T4模板时扔在一起的东西。

static class Exts
{
    public static string ToCSharpString(this Type type, StringBuilder sb = null)
    {
        sb = sb ?? new StringBuilder();

        if (type.IsGenericType)
        {
            sb.Append(type.Name.Split('`')[0]);
            sb.Append('<');
            bool first = true;
            foreach (var tp in type.GenericTypeArguments)
            {
                if (first)
                {
                    first = false;
                }
                else
                {
                    sb.Append(", ");
                }

                sb.Append(tp.ToCSharpString());
            }
            sb.Append('>');
        }
        else if (type.IsArray)
        {
            sb.Append(type.GetElementType().ToCSharpString());
            sb.Append("[]");
        }
        else
        {
            sb.Append(type.Name);
        }

        return sb.ToString();
    }
}

可能还有更多特殊情况,但它涵盖了泛型和数组。

var list = typeof(List<string>).ToCSharpString();
// List<String>

var dict = typeof(Dictionary<int, HashSet<string>>).ToCSharpString();
// Dictionary<Int32, HashSet<String>>

var array = typeof(Dictionary<int, HashSet<string>>[]).ToCSharpString();
// Dictionary<Int32, HashSet<String>>[]

以上是关于我们怎样才能得到List 来自System.Collections.Generic.List`1 [System.String]? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

急!!!asp.net中怎样才能用select查询出一个表中的所有id的值,并将得到的id 赋值给一个数组???

我们怎样才能得到一个情节箱线图背后的不同统计数据?

怎样使用list 得到redis中的map类型数据

我怎样才能更多地自定义 wordpress 标签列表?

将python中的LIST转换为所需的输出

企业怎样才能树立起自己的品牌网站?