title: Remove anonymous class string from Expression
body: <p>I've been trying to write a little helper class for my tests that would delay the checking of my object until I call verify then display a list of all the expressions that failed. In my scenario that i'm specifically testing I copy 6 files to a folder, then check that the 6 files were parsed correctly returning 6 objects. While building up my helper class I told it to evaluate <code>6==5</code> so that I can see its failing message. Here is the helper class</p>
  
  <pre><code>internal class ObjectVerifier
  {
      private readonly Queue&lt;DelayedTests&gt; _delayedTests = new Queue&lt;DelayedTests&gt;();
      public void Verify()
      {
          var exceptions = new StringBuilder();
          while(_delayedTests.Count &gt; 0)
          {
              var delayedTest = _delayedTests.Dequeue();
              if (!delayedTest.ObjectEvaluator.Invoke())
              {
                  exceptions.AppendLine($"{delayedTest.TestExpression} failed its evaluation");
              }
          }
          if (exceptions.Length &gt; 0)
          {
              NUnit.Framework.Assert.Fail(exceptions.ToString());
          }
      }
  
      internal void CheckThat(Expression&lt;Func&lt;bool&gt;&gt; evaluationTest)
      {
          _delayedTests.Enqueue(new DelayedTests
          {
              TestExpression = evaluationTest.ToString(),
              ObjectEvaluator = evaluationTest.Compile()
          });
      }
  
      private class DelayedTests
      {
          public string TestExpression { get; set; }
          public Func&lt;bool&gt; ObjectEvaluator { get; set; } 
      }
  }
  </code></pre>
  
  <p>and my test that is purposely fails</p>
  
  <pre><code>    [Test]
      public void TestGettingMenuItems()
      {
          CopyFilesToSaveFolder(TestCurseFiles);
  
          gbl.import_from = ImportSource.Curse;
  
          List&lt;MenuItem&gt; displayNames;
          List&lt;MenuItem&gt; fileNames;
          ovr017.BuildLoadablePlayersLists(out fileNames, out displayNames);
  
          _verifier.CheckThat((() =&gt; fileNames.Count.Equals(5)));
          _verifier.CheckThat(() =&gt; displayNames.Count.Equals(5));
          _verifier.Verify();
      }
  </code></pre>
  
  <p>The test fails for the correct reason, but the message it leaves is a little rough.</p>
  
  <pre><code>Test Name:  TestGettingMenuItems
  Test FullName:  GoldBox.Engine.ovr017Tests.TestGettingMenuItems
  Test Source:    C:\Git\coab\GoldBox.Engine.Tests\ovr017Tests.cs : line 34
  Test Outcome:   Failed
  Test Duration:  0:05:07.258
  
  Result StackTrace:  
  at GoldBox.Engine.ObjectVerifier.Verify() in C:\Git\coab\GoldBox.Engine.Tests\ObjectVerifier.cs:line 24
  at GoldBox.Engine.ovr017Tests.TestGettingMenuItems() in C:\Git\coab\GoldBox.Engine.Tests\ovr017Tests.cs:line 45
  Result Message: 
  () =&gt; value(GoldBox.Engine.ovr017Tests+&lt;&gt;c__DisplayClass8_0).fileNames.Count.Equals(5) failed its evaluation
  () =&gt; value(GoldBox.Engine.ovr017Tests+&lt;&gt;c__DisplayClass8_0).displayNames.Count.Equals(5) failed its evaluation
  </code></pre>
  
  <p>specifically the part <code>value(GoldBox.Engine.ovr017Tests+&lt;&gt;c__DisplayClass8_0).</code></p>
  
  <p>Is there a way with what I have that I can change it so that it would look more like <code>()=&gt;fileNames.Count.Equals(5)</code> in the message? I went into the debugger and poked through all the expressions's properties and didn't see any easy way to get what i'm hoping.</p>