title: vb.net C# property overiding mechanism
body: <p>I have a class in vb.net like </p>
  
  <pre><code>Public Class Customer
      Private _Name As String
      Public Overridable Property Name() As String
          Get
              Return _Name
          End Get
          Set(ByVal value As String)
              _Name = value
          End Set
      End Property
  End Class
  </code></pre>
  
  <p>and a class deriving from it </p>
  
  <pre><code>Public Class ProxyCustomer
      Inherits Customer
      Private _name As String
      Public Overrides WriteOnly Property Name() As String
          Set(ByVal value As String)
              _name = value
          End Set
      End Property
  End Class
  </code></pre>
  
  <p>which gives me following error 
  Public Overrides WriteOnly Property Name() As String' cannot override 'Public Overridable Property Name() As String' because they differ by 'ReadOnly' or 'WriteOnly'</p>
  
  <p>but i have same  construct in C# </p>
  
  <pre><code>public  class Customer 
  {
      public virtual string FirstName { get; set; }     
  }
  </code></pre>
  
  <p>public class CustomerProxy:Customer 
     {</p>
  
  <pre><code>   public override string FirstName
     {
         set
         {
             base.FirstName = value;
         }
     }
  </code></pre>
  
  <p>}</p>
  
  <p>which works, so the first thing is , is this consistent because 2 languages are behaving in a very inconsistent way.</p>
  
  <p>secondly, when i do a reflection to get a property, so for example</p>
  
  <pre><code>Dim propInfo  = GetType(Customer).GetProperty("Name")
  </code></pre>
  
  <p>the propINfo.canRead property is always false, shouldn't this be true since base class implements the getter of the property ?</p>
  
  <p>many thanks</p>