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

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

8
задан AustinWBryan 29 November 2018 в 21:07
поделиться

3 ответа

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

IMyBehaviour subject = myObject;

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

IMyBehaviour subject = myObject as IMyBehaviour;

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

17
ответ дан 5 December 2019 в 08:21
поделиться
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);
    }
}
2
ответ дан 5 December 2019 в 08:21
поделиться

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

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

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

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

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

1
ответ дан 5 December 2019 в 08:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: