According to an answer for Why are we not allowed to specify a constructor in an interface?,
Because an interface describes behaviour. Constructors aren’t behaviour. How an object is built is an implementation detail.
If interface describes behavior, why does interface allow declaring state?
public interface IStateBag { object State { get; } }
Well – its not really state. If interfaces allowed you to declare fields then that would be state. Since a property is just syntax sugar for get and set methods it is allowed.
Here is an example:
The previous interface gets compiled to the following IL:
As you can see, even the interface sees the property as methods.