Swift 4.0
Для async Request-Response вы можете выполнить обработчик завершения пользователем. См. Ниже, я изменил ваше решение с помощью парадигмы обработки завершения.
func getGenres(_ completion: @escaping (NSArray) -> ()) {
let urlPath = "http://creative.coventry.ac.uk/~bookshop/v1.1/index.php/genre/list"
print(urlPath)
guard let url = URL(string: urlPath) else { return }
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else { return }
do {
if let jsonResult = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as? NSDictionary {
let results = jsonResult["genres"] as! NSArray
print(results)
completion(results)
}
} catch {
//Catch Error here...
}
}
task.resume()
}
Вы можете вызвать эту функцию, как показано ниже. Простой
getGenres { (array) in
// Do operation with your array
}
используйте CodeDom, Roslyn является платформой компилятора и не поможет вам в вашей проблеме.
РЕДАКТИРОВАТЬ: может быть, проще использовать библиотеку Microsoft.CodeAnalysis (добавить пакет nuget Microsoft.CodeAnalysis.CSharp) из roslyn
var syntaxTree= CSharpSyntaxTree.ParseText(code);
//search for the methods and properties and add comments
// ** your code **
//
//getting the new sourcecode
var root = (CompilationUnitSyntax)syntaxTree.GetRoot();
var mc= new ModelCollector();
mc.Visit(root);
string newCode = JsonConvert.SerializeObject(mc.models);
Вот Метод создания новых комментариев: https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp.syntaxfactory.comment?view=roslyn-dotnet
[ 1111] полный документ библиотеки: https://docs.microsoft.com/en-us/dotnet/api/microsoft.codeanalysis.csharp?view=roslyn-dotnet