Генерация кода Roslyn, как создать выражение типа для заданного типа - PullRequest
2 голосов
/ 10 апреля 2020

Я пытаюсь сгенерировать код, используя Roslyn. Я создаю метод, подобный этому:

var workspace = new AdhocWorkspace();
var generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);

var parameters = new SyntaxNode[] { generator.ParameterDeclaration("MyParam", generator.TypeExpression(SpecialType.System_Boolean))};

var body = ...

var method = generatpr.MethodDeclaration(
   "MyMethod", 
   parameters,
   null, 
   null,
   Accessibility.Public,
   DeclarationModifiers.Virtual,
   new SyntaxNode[] { body});

Мой вопрос заключается в том, как мне создать параметры других типов, таких как Guid, или других структур или классов? И могу ли я сделать это так, чтобы это было языковой агонией c?

1 Ответ

0 голосов
/ 20 апреля 2020

экземпляр yntaxGenerator, и у меня есть экземпляр объекта Type, поэтому я использовал функцию SyntaxGenerator.IdentifierName () и передал свойство FullName экземпляра Type.

var workspace = new AdhocWorkspace();
var generator = SyntaxGenerator.GetGenerator(workspace, LanguageNames.CSharp);

var parameters = new SyntaxNode[] { generator.ParameterDeclaration("MyParam", generator.IdentifierName(typeParameter.FullName))};

var body = ...

var method = generatpr.MethodDeclaration(
   "MyMethod", 
   parameters,
   null, 
   null,
   Accessibility.Public,
   DeclarationModifiers.Virtual,
   new SyntaxNode[] { body});
...