Определить список определенного типа (не объекта) - PullRequest
1 голос
/ 22 ноября 2011

у меня есть: - интерфейс: IMyType - некоторые классы, реализующие это: MyType1, MyType2, MyType3

Как я могу определить список типа IMyType?

var myList = new List<Type> {typeof (MyType1), typeof (MyType2)};

Приведенный выше список не обязывает типы быть типом IMyType, и я могу добавить любой тип в список

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Просто

List<IMyType> list = new List<IMyType>();

сделает трюк, который тебе не нужен

2 голосов
/ 22 ноября 2011
class Program
{
    static void Main(string[] args)
    {
        IList<IMyType> lst = new List<IMyType>();
        lst.Add(new MyType1());
        lst.Add(new MyType2());
        lst.Add(new MyType3());

        foreach (var lstItem in lst)
        {
            Console.WriteLine(lstItem.GetType());
        }
    }
}
public interface IMyType { }
public class MyType1 : IMyType { }
public class MyType2 : IMyType { }
public class MyType3 : IMyType { }

Если вы хотите определить класс реализации, вы можете использовать obj.GetType () или оператор obj is MyType1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...