2010-08-25 3 views
6

Ich habe ein Objekt, das eine Schnittstelle implementiert, dann finde ich das Objekt mit Reflektion ... Wie kann ich das Objekt in die Schnittstelle werfen und es dann in eine Liste einfügen?Objekt als Schnittstelle

+6

Post einige Code und zeigen Sie, wo Sie stecken bleiben. –

+18

oh Ironie: Der Frage Titel ** ist die Antwort ** genau – sehe

Antwort

14

Sie müssen das Objekt nicht umwandeln, wenn es von einem Typ ist, der die Schnittstelle implementiert.

IMyBehaviour subject = myObject; 

Wenn die Art der myObject nur Object dann müssen Sie werfen. Ich würde es auf diese Weise tun:

IMyBehaviour subject = myObject as IMyBehaviour; 

Wenn myObject nicht die angegebene Schnittstelle implementieren Sie am Ende mit subjectnull zu sein. Sie werden wahrscheinlich danach suchen müssen, bevor Sie es in eine Liste eintragen.

1

Hier ist eine Funktion, die

cast [s] das Objekt in die Schnittstelle und legen Sie sie dann in eine Liste

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

Ich meine, wenn Sie bereits das Objekt gefunden haben und haben die Liste, das ist ziemlich elementar. Ersetzen Sie einfach "IMyInterface" mit der von Ihnen verwendeten Schnittstelle. Oder verallgemeinern Sie dies entsprechend Ihrem spezifischen Code.

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); 
    } 
} 
Verwandte Themen