Как использовать отражение найти свойства, реализующие конкретный интерфейс?

Рассмотрим следующий пример:

public interface IAnimal
{
}

public class Cat: IAnimal
{
}

public class DoStuff
{
    private Object catList = new List<Cat>();

    public void Go()
    {
        // I want to do this, but using reflection instead:
        if (catList is IEnumerable<IAnimal>)
            MessageBox.Show("animal list found");

        // now to try and do the above using reflection...
        PropertyInfo[] properties = this.GetType().GetProperties();
        foreach (PropertyInfo property in properties)
        {
            //... what do I do here?
            // if (*something*)
                MessageBox.Show("animal list found");
        }
    }
}

Можете ли вы завершить оператор if, заменив something правильным кодом?

EDIT:

Я заметил, что мне следовало использовать свойство вместо поля, чтобы это работало, поэтому оно должно быть:

    public Object catList
    {
        get
        {
          return new List<Cat>();
        }
    }
13
задан Stephen Oberauer 21 June 2011 в 09:21
поделиться