Объект как интерфейс - PullRequest
       7

Объект как интерфейс

8 голосов
/ 26 августа 2010

У меня есть объект, который реализует интерфейс, затем я нахожу этот объект с помощью отражения. Как я могу привести объект в интерфейс и затем поместить его в List<IInterface>?

Ответы [ 3 ]

16 голосов
/ 26 августа 2010

Вам не нужно приводить объект, если он относится к типу, который реализует интерфейс.

IMyBehaviour subject = myObject;

Если тип myObject равен просто Object, вам необходимо выполнить приведение.Я бы сделал это следующим образом:

IMyBehaviour subject = myObject as IMyBehaviour;

Если myObject не реализует данный интерфейс, вы получите subject, равную null.Возможно, вам придется проверить его, прежде чем занести в список.

2 голосов
/ 26 августа 2010
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 голос
/ 26 августа 2010

Вот функция, которая

приводит [s] объект к интерфейсу и затем помещает его в список

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

Я имею в виду, если вы 'мы уже нашли объект и у него есть список, это довольно элементарно.Просто замените IMyInterface на любой интерфейс, который вы используете.

Или обобщите это в соответствии с вашим конкретным кодом.

...