Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Здесь указано числовое значение
1List<T>Dictionary<TKey, TValue>2System.Collections.Generic.Dictionary`2Рефлексия параметров и возвращаемых значений методов
Пока все хорошо! Далее мы внесем небольшое усовершенствование в текущее приложение. В частности, вы обновите вспомогательную функцию
ListMethods()MethodInfoReturnTypeGetParameters()foreachstatic void ListMethods(Type t){ Console.WriteLine("***** Methods *****"); MethodInfo[] mi = t.GetMethods(); foreach (MethodInfo m in mi) { // Получить возвращаемый тип. string retVal = m.ReturnType.FullName; string paramInfo = "( "; // Получить параметры. foreach (ParameterInfo pi in m.GetParameters()) { paramInfo += string.Format("{0} {1} ", pi.ParameterType, pi.Name); } paramInfo += " )"; Теперь выведите на экран базовый метод sig. Console.WriteLine("->{0} {1} {2}", retVal, m.Name, paramInfo); } Console.WriteLine();}Если вы запустите это обновленное приложение, вы обнаружите, что методы данного типа стали гораздо более подробными. Если вы введете в программу в качестве входных данных вашего доброго друга
System.Object***** Methods *****->System.Type GetType ( )->System.String ToString ( )->System.Boolean Equals ( System.Object obj )->System.Boolean Equals ( System.Object objA System.Object objB )->System.Boolean ReferenceEquals ( System.Object objA System.Object objB )->System.Int32 GetHashCode ( )Текущая реализация
ListMethods()System.ReflectionXXXInfoMethodInfoPropertyInfoEventInfoToString()ListMethods()MethodInfoNamestatic void ListMethods(Type t){ Console.WriteLine("***** Methods *****"); var methodNames = from n in t.GetMethods() select n; foreach (var name in methodNames) { Console.WriteLine("->{0}", name); } Console.WriteLine();}Интересный материал, да? Очевидно, что пространство имен
System.ReflectionSystem.TypeMyTypeViewerТем не менее, на данном этапе вы создали (в некоторой степени способный) браузер объектов. Основное ограничение в этом конкретном примере заключается в том, что у вас нет возможности отразить не только текущую сборку (
MyTypeViewermscorlib.dllДинамическая загрузка сборок
Бывают случаи, когда вам нужно программно загрузить сборки на лету, даже если нет записи о данной сборке в манифесте. Формально говоря, акт загрузки внешних сборок по требованию называется динамической загрузкой.
System.ReflectionAssemblyAssemblyAssemblyЧтобы проиллюстрировать динамическую загрузку, создайте новый проект консольного приложения с именем
ExternalAssemblyReflectorDisplayTypes()Похожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.