gpt4 book ai didi

c# - 如何检索具有完全限定名称的嵌套类型?

转载 作者:太空狗 更新时间:2023-10-30 00:51:55 25 4
gpt4 key购买 nike

我似乎无法使用 Roslyn 的 Compilation.GetTypeByMetaDataName() 方法检索嵌套类。

例如:

var tree = CSharpSyntaxTree.ParseText(@"
using System;
namespace MyNamespace
{
public class MyClass
{
public class MyInnerClass
{
}
}
}
");

var Mscorlib = new MetadataFileReference(typeof(object).Assembly.Location);
var compilation = CSharpCompilation.Create("MyCompilation",
syntaxTrees: new[] { tree }, references: new[] { Mscorlib });

//Correctly retrieves outer type.
var outerClass = compilation.GetTypeByMetadataName("MyNamespace.MyClass");
//Cannot correctly retrieve inner type (returns null)
var innerClass = compilation.GetTypeByMetadataName("MyNamespace.MyClass.MyInnerClass");

是否可以使用完全限定名称检索嵌套类型?

我意识到一个解决方法是首先使用 INamespaceorTypeSymbol.GetTypeMembers() 检查包含类型是否包含任何类型,但我宁愿不走这条路。我假设 GetTypeByMetaDataName() 方法应该适用于任何类型,无论是嵌套类型还是其他类型。

最佳答案

尝试使用+来分隔内部类:

var innerClass = compilation.GetTypeByMetadataName("MyNamespace.MyClass+MyInnerClass");

Type.GetType 的文档方法讨论了用于命名嵌套类型的语法。

关于c# - 如何检索具有完全限定名称的嵌套类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24295679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com