Как разобрать имена универсальных типов C #?
Как я могу разобрать C # -стиль универсальных имен типов в форматеList
или жеDictionary
или даже более сложныйDictionary
, Предположим, что эти имена являются строками и могут фактически не представлять существующие типы. Он должен так же легко быть в состоянии разобратьBogusClass
, Чтобы быть ясным, я не заинтересован в разборе внутренних имен типов .NET форматаList`1[[System.Int32]]
, но фактические имена типов C #, как они будут отображаться в исходном коде, с или без квалификаторов пространства имен с использованием точечной нотации.
Регулярные выражения отсутствуют, потому что это вложенные структуры. Я думал, что, возможно, конструктор System.CodeDom.CodeTypeReference проанализирует его для меня, так как он имеетstring BaseType
а такжеCodeTypeReferenceCollection TypeArguments
члены, но те, по-видимому, должны быть установлены вручную.
CodeTypeReference - это та структура, которая мне нужна:
class TypeNameStructure
{
public string Name;
public TypeNameStructure[] GenericTypeArguments;
public bool IsGenericType{get;}
public bool IsArray{get;} //would be nice to detect this as well
public TypeNameStructure( string friendlyCSharpName )
{
//Parse friendlyCSharpName into name and generic type arguments recursively
}
}
Существуют ли какие-либо классы в структуре для такого разбора имени типа? Если нет, то как бы я пошел на разбор этого?