For this to work well, one should declare and implement an IReadWrite, which inherits both IReadable and IWritable, and includes a "new" read-write property. Otherwise an interface that has separate get and set properties, but no get-set property, will be neither readable nor writable.