Las interfaces, tal como se definen en MSDN "contienen solo las firmas de métodos, delegados o eventos". Sin embargo, dado que las propiedades no son más que azúcar sintáctica para un método get y set, también están permitidas en las interfaces. Mi pregunta es: ¿hay alguna situación en la que sea apropiado definir propiedades en una interfaz o deberíamos seguir los escenarios descritos por MSDN?¿Deben las interfaces definir propiedades?
Respuesta
Creo que las propiedades son perfectamente aceptables en las interfaces.
Como dijiste, realmente son un método get, set o get and set. Muchas interfaces en el Framework definen propiedades, como IAsyncResult y IWebProxy.
El artículo que vincula a los Estados también:
Una interfaz puede ser un miembro de un espacio de nombres o una clase y pueden contener firmas de los siguientes miembros:
- Métodos
- Propiedades
- indexadores
- Eventos
@Simon: sí, ya veo. –
Sí, una interfaz debe definir las propiedades cuando realmente lo necesitan. Por favor, supongo que. Hay una interfaz IUser que ha definido una propiedad "Nombre" y luego puede usarla sin preocuparse si el objeto no implementó la propiedad.
public void main()
{
IUser u = User.GetUser("id");
string name = u.Name;
}
- 1. ¿Se deben eliminar las propiedades inyectadas?
- 2. ¿Debo definir las interfaces en los lenguajes Duck Typed?
- 3. ¿Las interfaces de PHP tienen propiedades?
- 4. ¿Cómo definir correctamente las propiedades de clase?
- 5. Definir las propiedades de CSS dos veces
- 6. Delphi Rtti: Explore las propiedades de las interfaces?
- 7. Por qué las propiedades no son declarables en las interfaces
- 8. Interfaces y propiedades
- 9. ¿Los objetos del modelo deben tener interfaces?
- 10. ¿Deben modelarse las relaciones "to-many" como propiedades?
- 11. qué propiedades implementadas automáticamente deben definir tanto acceso get y set
- 12. Autorreferencia en las interfaces
- 13. ¿Implementando propiedades de interfaz en interfaces?
- 14. ¿Deben las interfaces vivir en el mismo espacio de nombres que las clases concretas que las implementan?
- 15. ¿Deberían las entidades implementar interfaces?
- 16. ¿Codificando a las interfaces?
- 17. Comprensión de las interfaces
- 18. Anotaciones en las interfaces?
- 19. ¿Con qué frecuencia se deben definir las excepciones personalizadas en python?
- 20. Obteniendo el atributo helptring aplicado a las propiedades de C# expuestas a través de las interfaces COM
- 21. ¿Cómo puedo definir interfaces en C++/CLI administradas?
- 22. Herencia en las interfaces de colección Java
- 23. Cuando las propiedades de anidamiento que implementan INotifyPropertyChanged deben cambiar la propoción del objeto principal?
- 24. ¿Las propiedades de mis actores de Scala deben marcarse como @volatile?
- 25. ¿Son necesarias las interfaces en JavaScript?
- 26. Destructores virtuales para las interfaces
- 27. ¿Propósito de las interfaces Zope?
- 28. Las estructuras, interfaces y boxeo
- 29. Importancia de las interfaces C#
- 30. C# Cómo usar las interfaces
Gracias, Reed. En este caso, ¿estas propiedades deberían ser de tipos elementales (no definidos por el usuario)? La razón por la que pregunto es porque si, por ejemplo, lo define como un tipo de dominio, puede terminar con una referencia circular. –
@ Otávio Décio: tenga en cuenta el propósito de una interfaz. Una interfaz define un contrato. Si se requiere una propiedad para el contrato, está bien. No debe terminar con referencias circulares, ya que las propiedades no deben ser tipos que están implementando directamente la interfaz, sino básicos, tipos de marcos o tipos que, a su vez, forman parte del "contrato". IWebProxy (vinculado arriba) es un buen ejemplo: tiene una propiedad Credentials, que es de ICredentials. Eso es parte del contrato, pero es esencial un tipo "definido por el usuario" aún (para esa lib). –
solo para asegurarse: las propiedades definidas en las interfaces deben ser tipos de concreto definidos por el usuario o tipos de interfaz (definidos por el usuario o no). –