Как получить имя метода, используемого в лямбда, которому был передан параметр

Параметр в 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 тогда вы можете отражать лямбду...

См. http://msdn.microsoft.com/en-us/library/bb397951.aspx

Другие вопросы по тегам