9
votes

Objet comme interface

J'ai un objet qui implémente une interface, je trouve ensuite cet objet en utilisant la réflexion. Comment puis-je lancer l'objet dans l'interface, puis placez-le dans une liste ?


2 commentaires

Publiez du code et pointez où vous êtes coincé.


Oh irony: le titre de la question est la réponse exactement


3 Réponses :


21
votes

Vous n'avez pas besoin de lancer l'objet s'il est d'un type qui implémente l'interface. xxx

si le type de MyObject est juste objet alors vous devez lancer. Je le ferais de cette façon: xxx

si MyObject ne met pas en œuvre l'interface donnée que vous vous retrouvez avec sujet étant null . Vous aurez probablement besoin de vérifier cela avant de la mettre dans une liste.


0 commentaires

1
votes

Voici une fonction que

casser [s] l'objet dans l'interface puis placez-le dans une liste xxx

Je veux dire, si vous avez déjà trouvé l'objet et que vous avez la liste, c'est assez élémentaire. Il suffit de remplacer imyinterface avec n'importe quelle interface que vous utilisez.

ou généraliser à partir de ceci, le cas échéant pour votre code spécifique.


0 commentaires

1
votes
public interface IFoo { }
public class Foo : IFoo {}

private SomeMethod(object obj)
{
    var list = new List<IFoo>();
    var foo = obj as IFoo;

    if (foo != null)
    {
        list.Add(foo);
    }
}

1 commentaires

Ou si vous avez une liste FOO de type FOO: var liste = nouvelle liste (foo.toarray ());