2010-08-25 12 views
6

Tengo un objeto que implementa una interfaz, luego encuentro ese objeto utilizando la reflexión ... ¿Cómo puedo lanzar el objeto a la interfaz y luego colocarlo en una lista?Objeto como interfaz

+6

Publica un código y apunta a dónde estás atascado. –

+18

oh ironía: el título de la pregunta ** es la respuesta ** exactamente – sehe

Respuesta

14

No necesita lanzar el objeto si es del tipo que implementa la interfaz.

IMyBehaviour subject = myObject; 

Si el tipo de myObject es sólo Object entonces usted necesita para echar. Me gustaría hacerlo de esta manera:

IMyBehaviour subject = myObject as IMyBehaviour; 

Si myObject no implementa la interfaz dada se termina con subject siendo null. Es probable que deba verificarlo antes de incluirlo en una lista.

1

Aquí es una función que

cast [s] el objeto en la interfaz y luego se coloca en una lista

public void CastAndAdd(object objThatImplementsMyInterface, IList<IMyInterface> theList) { 
    theList.Add((IMyInterface)objThatImplementsMyInterface); 
} 

quiero decir, si ya has encontrado el objeto y tiene la lista, esto es bastante elemental. Simplemente reemplace "IMyInterface" con la interfaz que esté utilizando. O generalice esto según corresponda para su código específico.

1
public interface IFoo { } 

public class Foo : IFoo {} 


SomeMethod(object obj) 
{ 
    var list = new List<IFoo>(); 
    var foo = obj as IFoo; 
    if(foo != null) 
    { 
     list.Add(foo); 
    } 
}