Хранить объекты разного типа в одном списке имеет смысл, только если они наследуют минимум один общий интерфейс.
Допустим мы решили в списке хранить все формы нашего приложения — у всех форм общий родительский класс, поэтому мы наверняка знаем общие методы. В таком случае с объектами такого списка будет сводится к такому виду:
Copy Source | Copy HTML
-
- using System.Reflection;
-
- // создаем наши формы
- List<object> objects = new List<object>();
- objects.Add( new Form1() );
- objects.Add( new Form1() );
- objects.Add( new Form2() );
- objects.Add( new Form3() );
-
- //отображаем их
- foreach( object obj in objects )
- {
- Type t= obj .GetType();
- Type[] tIncomingParams = {};
-
- MethodInfo methodInfo = type.GetMethod( "Show", tIncomingParams );
- methodInfo.Invoke( obj, null );
- }
-
Если интересно, как проверить наличие конкретного объекта неизвестного типа в таком списке, пишите.