Я играю с идеей вмешательства в состояние состояния внутреннего конечного автомата, но у меня возникли проблемы с поиском способа доступа к ссылке на конечный автомат в моей метод задачи.Получение фактической ссылки на конечный автомат задачи
class Test
{
async Task IndexAsync()
{
var nottheactualtype = GetType(); //This references the "Test" class, but this operation is actually located in the nested state machine class named "IndexAsync", in the method "MoveNext()".
var actualcalledmethod = new StackTrace().GetFrame(0).GetMethod(); //This shows the actual method currently being run: IndexAsync.MoveNext().
//But how do I get the reference to my current IndexAsync class?
}
}
Как я могу получить доступ к ссылке на сгенерированный конечный автомат, который в настоящее время запущен?
ли это быть внутри самого метода? У меня есть много кода, делающих такие вещи в https://github.com/jskeet/DemoCode/tree/master/Abusing%20CSharp/Code/FunWithAwaiters, которые могут вам помочь, но он не стремится получить состояние машина * в пределах * асинхронный способ. –
Я верю. В определенном месте в асинхронном методе я хочу видеть, какое состояние на конечной машине запущено. Это больше, чем это, но суть в том, что я хочу получить доступ к членам текущего запущенного конечного автомата. Я могу получить доступ к элементам через отражение, и я могу получить доступ к типу сгенерированного класса. Но я не могу найти способ получить доступ к фактической ссылке на него. – Micael
Хорошо, я думаю, что я что-то придумал, но мне нужно попробовать ... –