【发布时间】:2015-08-13 22:05:31
【问题描述】:
我正在尝试找出是否有办法获取方法参数的 TYPE 的内部详细信息。
假设一个方法具有以下定义
public void method1(Type1 param1, Type2 param2)
{
...
...
}
而Type1 具有以下定义
public class Type1
{
public int prop1 {get; set;}
public string prop2 {get; set;}
public double prop3 {get; set;}
}
那么我希望从我的示例工具中得到的是 Type1 类的属性列表。也就是说,我希望我的输出是
prop1
prop2
prop3
我可以通过执行param.Type 来获得对参数的引用,但它的类型是IdentifierNameSyntax。我可以从中获取名称(在本例中为 Type1),但无法深入挖掘 INTO Type1 以获取属性。
有没有什么简单的方法可以得到我还不知道的东西?还是我必须使用我得到的类型的名称再次在整个解决方案中进行搜索?
非常感谢!
P.S.:我确实想过使用Reflection,但我所拥有的只是一个字符串 (Type1),而不是实际的 TYPE。不知道能不能用这个。
Update-1: This question 似乎有点接近我的预期,但据我了解,用户只想要参数类型的名称,而不是内部细节。
Update-2:从下面的我的工具中添加示例代码。不幸的是,我无法发布实际代码,但下面的示例基本上就是我想要做的。 Update-2:从下面的工具中添加示例代码。不幸的是,我无法发布实际代码,但下面的示例基本上就是我想要做的。
var methodNode = (MethodDeclarationSyntax)node;
string paramClassName = string.Empty;
foreach (var param in methodNode.ParameterList.Parameters)
{
paramClassName = param.Type.ToFullString();
//GET Class details from the above class name
GetInnerDetailsOfClassFromClassName(paramClassName); //any way to do this?
}
【问题讨论】:
-
您可能希望查看符号而不是语法。如果您可以向我们展示您的代码的上下文,那么为您提供帮助会更容易......
-
@JonSkeet 更新了代码。请检查。
-
正确 - 查看 Serj-Tm 链接到的问题。基本上是一样的——你想通过语义模型获取符号信息。
-
@Serj-Tm 您分享的链接基本上是再次进行完整的解决方案搜索。但我想知道是否有另一种方法可以做到这一点,因为当我的程序在上面给定的代码中时,它已经在搜索中间了。因此要避免在搜索中启动另一个搜索:)
标签: c# visual-studio-2015 code-analysis roslyn