В .net необходимо, чтобы реализация свойства, доступного только для чтения, в интерфейсе включала геттер, но не установщик, а для реализации свойства чтения-записи включались как геттер, так и сеттер. Также необходимо, чтобы реализация свойства только для записи (если таковое определено) включала в себя установщик, но не получал.
В C #, если класс определяет открытое свойство с тем же именем, что и у свойства в интерфейсе, открытое свойство реализует методы, требуемые этим интерфейсом, а класс явно не реализует свойство интерфейса, компилятор автоматически генерировать свойство, которое использует получатель и / или установщик открытого свойства, в зависимости от ситуации. Даже если класс реализует три интерфейса, один со свойством только для чтения Foo
, другой со свойством только для записи Foo
, а другой со свойством только для чтения и записи Foo
, одно открытое свойство для чтения и записи Foo
можно использовать для реализации свойства Foo
для всех из них.
Концептуально, нет причин, по которым vb.net не может предложить аналогичную функцию и генерировать два (или даже три) разных свойства, как требуется для реализации интерфейсов. По крайней мере, в настоящее время, если член класса vb.net помечен как реализующий элемент интерфейса, ожидается, что он будет идеально соответствовать члену без переноса.