When you implement an interface that has a property. You would think that you wouldn't be able to add additional accessors. Given the IDisplay interface below then class should only be allowed to implement the set accessor. But in reality since properties really resolve down to just functions, all you are really doing is just adding another function to your class.

So you can actually implement the interface property with both the get and set accessor even though the propery is only supposed to have the set accessor.

interface IDisplay
{
    string Message
    {
        set;
    }
}
   
class Shape : IDisplay
{
    public string Message
    {
        get // not part of the interface
        {
            return msg;
        }
        set
        {
            msg = value;
        }
    }
}

Note: That this ONLY works when you use public interface implementation if you switch this to explicit interface implementation then you get a compiler error.

class Shape : IDisplay
{
    string IDisplay.Message
    {
        get // syntax error
        {
            return msg;
        }
        set
        {
            msg = value;
        }
    }
}