Ну, это не совсем так. Если бы интерфейсы позволили вам объявить поля , то это было бы состояние. Поскольку свойство является просто синтаксическим сахаром для методов get и set, оно разрешено.
Вот пример:
interface IFoo
{
Object Foo { get; set; }
}
Предыдущий интерфейс компилируется в следующий IL:
.class private interface abstract auto ansi IFoo
{
.property instance object Foo
{
.get instance object IFoo::get_Foo()
.set instance void IFoo::set_Foo(object)
}
}
Как видите, даже интерфейс видит свойство как методы.