title: Argument passing in c# does not work as should ? Inside function used reflection
body: <p>I am passing one parameter/object to the function "RefValTest(object oIn)" by the value but after function call is over object passed by the value is changed, that shoud not happened, right ?</p>
  
  <pre><code>    class MilanTest
      { 
          public int SomeValue { get; set; }
      }
  
      class PR
      {
  
        public static object RefValTest(object oIn)
        { 
  
          PropertyInfo tProperty = oIn.GetType().GetProperty("SomeValue");
          tProperty.SetValue(oIn, 5, null);
  
          return null;
         }
  
       }
  </code></pre>
  
  <p>somewhere in the main:</p>
  
  <pre><code>        MilanTest x = new MilanTest ();
          //here is by compiler default x.Somevalue == 0
  
          PR.RefValTest(x);
          //here is by compiler default x.Somevalue == 5
  </code></pre>
  
  <p>How it is possible that after call of "PR.RefValTest(x)" value of object x.SomeValue is changed ?</p>
  
  <p>Br,
  Milan.</p>