Is it possible somehow to achieve this behavior in C#:
public interface IReadOnly
{
Data Value { get; }
}
internal interface IWritable : IReadOnly
{
Data Value { get; set; }
}
I want to be able to expose a readonly interface to outside assemblies, but use a writable interface internally (which I could also implement in different ways).
I know I can use an abstract class which implements IReadOnly but adds setters, but that forces me to derive all internal implementations from that class.
This isn’t a problem:
The Impl.Value property implementation takes care of both IReadOnly.Value and IWritable.Value, as demonstrated in this test snippet: