Я пытаюсь написать метод, который будет программно генерировать документацию о том, где определенные типы используются в приложении. Я пытаюсь использовать отражение, чтобы определить, какие методы создают экземпляры этих типов. Это отлично работает для обычных методов, например:
class Program
{
static void Main(string[] args)
{
var program = typeof(Program);
var variablesTestMethod = program.GetMethod("VariablesTest").GetMethodBody().LocalVariables;
Console.ReadLine();
}
public void VariablesTest()
{
var firstVariable = "First Variable";
var secondVariable = 10;
}
}
В этом случае variablesTestMethodLocalVariables
- это список, содержащий 2 элемента, System.String
и System.Int32
, чего я и ожидал. Однако, если метод помечен как asyn c, это не сработает.
class Program
{
static void Main(string[] args)
{
var program = typeof(Program);
var asyncVariablesTestMethod = program.GetMethod("AsyncVariablesTest").GetMethodBody().LocalVariables;
Console.ReadLine();
}
public async Task AsyncVariablesTest()
{
var firstVariable = "First Variable";
var secondVariable = 10;
}
}
В этом случае вместо списка, содержащего две переменные, есть только одна переменная, и тип указан как LocalVariablesTest.Program+<AsyncVariablesTest>d__2
, что мне не нужно.
Есть ли способ определить типы, на которые ссылается асинхронный метод, с помощью свойства LocalVariables
в теле метода? Или есть другой метод или библиотека, которые я мог бы использовать, чтобы получить то, что мне нужно?