Similar a this Java question. Me gustaría especificar que una variable implemente múltiples interfaces. Por ejemplo¿Hay alguna manera de declarar una variable que implementa múltiples interfaces en .Net?
private {IFirstInterface, ISecondInterface} _foo;
public void SetFoo({IFirstInterface, ISecondInterface} value)
{
_foo = value;
}
Requisitos:
- que no tienen la posibilidad de añadir una interfaz para la mayoría del tipo que se pasa a Foo. Por lo tanto, no puedo crear una tercera interfaz que herede de IFirstInterface e ISecondInterface.
- Me gustaría evitar que la clase contenedora sea genérica si es posible porque el tipo de Foo no tiene mucho que ver con la clase y es probable que el usuario no lo sepa en tiempo de compilación.
- Necesito usar foo para acceder a los métodos en ambas interfaces más adelante.
- Me gustaría hacer esto de forma segura para el compilador, es decir, no intentar enviar contenido a la interfaz antes de intentar usarlo. Si foo no implementa ambas interfaces, un poco de funcionalidad no funcionará correctamente.
¿Esto es posible?
Editar: He querido esto un par de veces por varias razones. En este caso, es porque estoy cambiando un conjunto de propiedades de ObservableCollections a ReadOnlyObservableCollections. Tengo una clase de ayuda que crea una proyección desde una fuente ObservableCollection a otra Colección. Como ReadOnlyObservableCollection no hereda de ObservableCollection y solo necesito operaciones en IList e INotifyCollectionChanged, esperaba almacenar mi colección de origen como una combinación de estas dos interfaces en lugar de requerir una ObservableCollection.
usted está fuera de suerte. – ChaosPandion
Respuesta corta: no. No sin definir una tercera interfaz que hereda de IFirstInterface e ISecondInterface. – Anthony
Mi único pensamiento es que podría tener la misma instancia que dos variables de interfaz? ¿En qué circunstancia necesitó esto? ¿Podrías darnos una idea de lo que estabas haciendo donde necesitabas algo como esto? –