Como sugiere el título de la pregunta, quiero agregar un Action<string>
a una interfaz. es posible? Por el momento se dice Interfaces cannot contain fields
¿Cómo se agrega una Acción <string> a una interfaz?
Respuesta
Se necesitaría para agregarlo como una propiedad:
public interface IYourInterface
{
Action<string> YourAction { get; set; }
}
Sin el get/set es sólo un campo, y como el compilador señala interfaces no puede contener campos . Esto quiere decir que cuando se implementa esta interfaz que necesita para abastecer a la propiedad real, así (aunque, obviamente, puede ser un simple auto-propiedad):
public class Foo : IYourInterface
{
public Action<string> YourAction { get; set; }
// ...
}
Teniendo en cuenta que, a continuación, puede utilizar su Action<string>
de la interfaz:
IYourInterface iFoo = new Foo();
iFoo.YourAction = s => Console.WriteLine(s);
iFoo.YourAction("Hello World!");
Como se indica Hans, se puede indicar en la interfaz sólo un get
(o incluso sólo una set
) si lo desea. Esto no significa que la clase no puede tener, sino que significa que no será accesible a través de la interfaz. Por ejemplo:
public interface IYourInterface
{
Action<string> YourAction { get; }
}
public class Foo : IYourInterface
{
public Action<string> YourAction { get; set; }
}
Así que en el código anterior, se puede acceder a la propiedad YourAction
sólo como un get
a través de la interfaz, pero se podía set
o get
desde la clase Foo
.
Como nota adicional: en una interfaz puede especificar que solo hay un "obtener": 'Acción
Muy cierto. Incluso puede especificar que solo tiene un conjunto (aunque esto es algo menos útil) –
Una interfaz no puede contener campos, pero pueden contener propiedades, por lo que podría agregarlo de esa manera.
cito:
"Interfaces consisten en métodos, propiedades, eventos, indizadores, o cualquier combinación de estos cuatro tipos de miembro Una interfaz no puede contener constantes, campos, operadores, constructores de instancia, destructores. ., o tipos no puede contener miembros estáticos son miembros Interfaces públicos automáticamente, y no puede incluir ningún modificador de acceso"
ya que la acción es un feild -. no podría ser una parte de la interfaz. http://msdn.microsoft.com/en-us/library/ms173156.aspx
¿Quién dice que debe ser un campo? Podría ser una propiedad también. – rideronthestorm
- 1. ¿Cómo se agrega una LinkedList <T> a una LinkedList <T> en C#?
- 2. ¿Cómo hacer una acción cuando se agrega un elemento a una página usando Jquery?
- 3. ¿Cómo se agrega una columna calculada a una tabla?
- 4. ¿Cómo se puede pasar una Lista <objetos que implementan una interfaz> a un método?
- 5. ¿Cómo se agrega a una cadena ya existente?
- 6. ¿Cómo se agrega una barra de desplazamiento a un div?
- 7. ¿Cómo hacer que JMX se una a una interfaz específica?
- 8. ¿Cómo se prueba una interfaz?
- 9. C# Convertir una acción a otra <bool>
- 10. ¿Cómo puedo crear una Acción <T> en F #?
- 11. ¿Por qué solo se agrega una vez?
- 12. Cuándo se agrega una hoja de estilo a document.styleSheets
- 13. ¿Cómo iterar una interfaz IGrouping <T>?
- 14. ¿Cómo se agrega una columna NOT NULL a una tabla grande en SQL Server?
- 15. cómo serializar una interfaz como IList <T>
- 16. Aplicación Qt simple se niega a compilar una vez que se agrega una señal/ranura
- 17. ¿Cómo se implementa una interfaz en IronPython?
- 18. Cómo eliminar una acción agregada a través de una clase
- 19. En CoffeeScript, ¿cómo agrega un valor a una matriz?
- 20. Enum <? se extiende la interfaz>
- 21. Delegado para una acción < ref T1, T2>
- 22. Cómo pasar una colección/parámetros de matriz a una Acción
- 23. cómo pasar una variable a una acción UIButton
- 24. ¿Cómo liberar una interfaz?
- 25. UIBarButtonItem icono blanco cuando se agrega a través de IB, negro cuando se agrega mediante programación
- 26. Acción <T> o Acción <in T>?
- 27. ¿Cómo se escribe una clase de logger con cout interfaz de estilo (registrador << "Error:" << val << endl;)
- 28. Convertir Acción <T> a la acción <object>
- 29. ¿Cómo combino varias acciones <T> en una sola acción <T> en C#?
- 30. ¿Activar una acción cuando se modifica document.cookie?
Es un mal diseño agregar delegados a su contrato/interfaz. –
@KirillPolishchuk ¿podría explicar/probar eso? – anatol