<p>I need to convert several Java classes to C#, but I have faced few problems.</p>

<p>In Java I have following class hierarchy:</p>

<pre><code>public abstract class AbstractObject {
    public String getId() {
        return id;
    } 
}

public class ConcreteObject extends AbstractObject {
    public void setId(String id) {
        this.id= id;
    }
}
</code></pre>

<p>There are implementation of AbstractObject which do not need to have setId() defined, so I cannot move it up in the hierarchy.</p>

<p>How to convert this to C# using properties? Is that possible?</p>

When you supply only the
```
get
```
portion of a property in .Net, you are explicitly telling the compiler that this property is read-only.  It's a bigger deal than just not providing a
```
set
```
.  This is evident in the vb version of the property syntax, where you must also explicitly declare the property is ReadOnly.
What you might be able to do is provide both a getter and a setter, but throw a
```
NotImplementedException
```
in the abstract setter, decorate it with the appropriate attributes and document so that no one uses it unless the setter has been property overridden.  Otherwise, you're probably better off keeping these as methods anyway, to avoid a disconnect between Java and .Net versions of the code.