title: Prevent implicit cast to int when asking for Expression<Func<T, decimal>>
body: <p>So, <code>int</code> is implicitly convertible to <code>decimal</code>. This causes an issue when wanting an <code>Expression</code> of a <code>decimal</code> property, where an <code>Expression</code> of an <code>int</code> property with an implicit cast is passed instead. Due to the implicit cast, no compiler error is given.</p>
  
  <p>Eg:</p>
  
  <pre><code>class Thing {
     public int IntProperty { get; set; }
  }
  
  void DoSomething(
     Expression&lt;Func&lt;Thing, decimal&gt;&gt; pDecimalExpression
  ) {
     ...
  }
  
  DoSomething(t =&gt; t.IntProperty); // compiles; IntProperty is implicitly cast to decimal
  </code></pre>
  
  <p>Is there a way at compile time that I can ensure I'm really getting a <code>decimal</code> property? I would like a compiler error if I pass an expression with an implicit cast in it like this.</p>
  
  <p>(Since I'm using reflection, I end up with a runtime error saying that the property I'm using can't be given a <code>decimal</code> value. I feel like the best I could do is detect the type mismatch myself at runtime and throw an only slightly better error instead.)</p>