Я пытаюсь выяснить, есть ли способ получить внутренние данные ТИПА параметра метода.Получить внутренние данные ТИПА параметра метода с использованием Roslyn
Say способ имеет определение ниже
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
), а не фактический тип. Не уверен, могу ли я использовать это или нет.
Update-1:This question, кажется, мягко близко к тому, что я ожидал, но от того, что я понимаю, пользователь хочет только имя типа параметра, а не его внутренние детали.
Обновление-2: Добавление образца кода из моего инструмента ниже. К сожалению, я не могу опубликовать фактический код, но ниже пример в основном то, что я пытаюсь сделать. Обновление-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?
}
Возможно, вы хотите посмотреть на * символы *, а не на синтаксис *. Было бы проще помочь вам в этом, если бы вы могли показать нам контекст вашего кода ... –
http://stackoverflow.com/a/23878410/1034136 –
@JonSkeet Обновлен код. Пожалуйста, проверьте. –