tipos interfaces implementacion herencia c# asp.net interface getter-setter

c# - interfaces - ¿Cómo se implementa un setter privado cuando se usa una interfaz?



implementacion de interfaces c# (2)

Creé una interfaz con algunas propiedades.

Si la interfaz no existiera, todas las propiedades del objeto de clase se establecerían en

{get; private set; }

Sin embargo, esto no está permitido cuando se utiliza una interfaz, por lo que se puede lograr y, en caso afirmativo, ¿cómo?


En la interfaz puede definir solo getter para su propiedad

interface IFoo { string Name { get; } }

Sin embargo, en tu clase puedes extenderlo para tener un private setter

class Foo : IFoo { public string Name { get; private set; } }


La interfaz define la API pública. Si la API pública contiene solo getter, entonces usted solo define getter en la interfaz:

public interface IBar { int Foo { get; } }

Private setter no forma parte de una API pública (como cualquier otro miembro privado), por lo que no se puede definir en la interfaz. Pero puede agregar miembros (privados) a la implementación de la interfaz. En realidad, no importa si el organismo implementador se implementará como público o privado, o si existirá alguien que lo establezca:

public int Foo { get; set; } // public public int Foo { get; private set; } // private public int Foo { get { return _foo; } // no setter } public void Poop(); // this member also not part of interface

Setter no es parte de la interfaz, por lo que no se puede llamar a través de su interfaz:

IBar bar = new Bar(); bar.Foo = 42; // will not work thus setter is not defined in interface bar.Poop(); // will not work thus Poop is not defined in interface