title: Expression Is a value and therefore cannot be the target of an assignment
body: <p>I ran into an issue using a struct today that caught me off guard, and I was hoping someone could shed some light on it for me.</p>
  
  <p>I have a struct defined like this:</p>
  
  <pre><code>public struct PaymentDetail
  {
      public Decimal Amount{get;set;}
      public string CheckNumber{get;set;}
      public PaymentType PaymentType{get;set;}
  }
  </code></pre>
  
  <p>I have a class that contains this info</p>
  
  <pre><code>public class Transaction
  {
      public PaymentDetail Payment{get;}
  }
  </code></pre>
  
  <p>I have a presentation model which in which I want to set the underlying properties like this</p>
  
  <pre><code>public class ViewModel
  {
      public Decimal Amount
      {
          get{return _Transaction.PaymentDetail.Amount;}
          set
          {
               //This is the offending line of code
               _Transaction.PaymentDetail.Amount = value;
               RaisePropertyChanged("Amount");
          }
      }
  }
  </code></pre>
  
  <p>What's wierd is I can make this work if I change the Payment property to a public field like this:</p>
  
  <pre><code>public class Transaction
  {
      public PaymentDetail Payment;
  }
  </code></pre>
  
  <p>there's obviosuly something I don't understand about structs that are causing this. Is this a bad idea? Is there a better way? What am I doing wrong?</p>