如何从字符串"string []"获取.NET数组类型?

tag*_*s2k 1 c# arrays reflection

给定字符串"string[]"并要求获取此类的基础类型,可以从以下开始:

private Type getTypeByName(string typeName)
{
    if (typeName.EndsWith("[]"))
    {
           return something; // But what? 
    }

    return Type.GetType(typeName);
}
Run Code Online (Sandbox Code Playgroud)

什么类型的"字符串[]"以及如何反映出它的类型?

显然有一种System.String类型和一种System.Array类型,但我看不出它们如何像你通常所做的那样"一起"反映出来,Nullable<T>并且用MakeGenericType方法来反映它们.

任何帮助打破我已经融入的思维循环都将非常感激!

Kon*_*lph 8

你的问题究竟是什么?Type.GetType工作良好:

Console.WriteLine(typeof(string[]));
var type = Type.GetType("System.String[]");
Console.WriteLine(type);
Run Code Online (Sandbox Code Playgroud)

打印:

System.String[]
System.String[]
Run Code Online (Sandbox Code Playgroud)

很明显,这可以按预期工作.

  • @tags:嗯,`string`是一个C#关键字,它不是CLR/CTS类型,所以你不能指望CLR知道它.如果绝对必须使用它,请将所有C#关键字类型映射放入字典中,并使用字典替换输入字符串中的这些类型. (2认同)