Как получить имя метода, используемого в лямбда, которому был передан параметр
Параметр в AssertManager.Record находится в действии, но мне нужно значение внутри лямбда-действия, которое является asserts.So мне нужно получить, какой тип утверждения я использовал, который я передал из одного класса в другой. Я использовал лямбда-выражение по определенной причине, поэтому я не могу редактировать это. Мне просто нужен строковый тип, который говорит, какое бы утверждение я ни сделал. в моем примере он должен вывести "Assert.True" или "Assert.Equal" на консоль.
Вот пример кода, который я использую:
public class ClassTest
{
AssertManager = new AssertManager();
[Fact]
public void sampleTestAssert()
{
AssertManager.Record(() => Assert.True(true));
AssertManager.Record(() => Assert.Equal("Dog","Dog"));
}
}
public class AssertManager
{
public void Record(Action testMethod)
{
//is it possible to use testMethod to get the Assert inside the lambda in the
//Output what assert i did (ex. Assert.True, Assert.Equal )
}
}
Пожалуйста, дайте мне знать, если у вас есть решение для этого. Спасибо.
1 ответ
Решение
Вам нужно использовать Expression<Action>
вместо Action
тогда вы можете отражать лямбду...