2010-08-25 7 views
6

Ho un oggetto che implementa un'interfaccia, quindi trovo quell'oggetto usando la riflessione ... Come posso lanciare l'oggetto nell'interfaccia e quindi inserirlo in una lista?Oggetto come interfaccia

+6

Inserisci un codice e indica dove sei bloccato. –

+18

oh ironia: il titolo della domanda ** è la risposta ** esattamente – sehe

risposta

14

Non è necessario eseguire il cast dell'oggetto se è di un tipo che implementa l'interfaccia.

IMyBehaviour subject = myObject; 

Se il tipo di myObject è solo Object allora avete bisogno di lanciare. Vorrei fare in questo modo:

IMyBehaviour subject = myObject as IMyBehaviour; 

Se myObject non implementa l'interfaccia data si finisce con subject essere null. Probabilmente dovrai controllarlo prima di inserirlo in una lista.

1

Ecco una funzione che

fusione [s] l'oggetto nell'interfaccia e poi posto in una lista

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

Voglio dire, se hai già trovato l'oggetto e avere la lista, questo è abbastanza elementare. Basta sostituire "IMyInterface" con qualsiasi interfaccia tu stia utilizzando. O generalizzare da questo come appropriato per il tuo codice specifico.

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); 
    } 
} 
Problemi correlati