Читать книгу 📗 "Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю"
Console.WriteLine("Is type generic? {0}", t.IsGenericTypeDefinition); // Обобщенный? Console.WriteLine("Is type a class type? {0}", t.IsClass); // Тип класса? Console.WriteLine();}Добавление операторов верхнего уровня
Операторы верхнего уровня в файле
Program.csТуре.GetType()System.ТуреConsole.WriteLine("***** Welcome to MyTypeViewer *****");string typeName = "";do{ Console.WriteLine("nEnter a type name to evaluate"); // Пригласить ввести имя типа. Console.Write("or enter Q to quit: "); // или Q для завершения // Получить имя типа typeName = Console.ReadLine(); // Пользователь желает завершить программу? if (typeName.Equals("Q",StringComparison.OrdinalIgnoreCase)) { break; } // Попробовать отобразить информацию о типе. try { Type t = Type.GetType(typeName); Console.WriteLine(""); ListVariousStats(t); ListFields(t); ListProps(t); ListMethods(t); ListInterfaces(t); } catch { Console.WriteLine("Sorry, can't find type"); }} while (true);В настоящий момент приложение
MyTypeViewer.exeТуре.GetType()•
System.Int32•
System.Collections.ArrayList•
System.Threading.Thread•
System.Void•
System.10.BinaryWriter•
System.Math•
MyTypeViewer.ProgramНиже показан частичный вывод при указании
System.Math***** Welcome to MyTypeViewer *****Enter a type name to evaluateor enter Q to quit: System.Math***** Various Statistics *****Base class is: System.ObjectIs type abstract? TrueIs type sealed? TrueIs type generic? FalseIs type a class type? True***** Fields *****->PI->E***** Properties ********** Methods *****->Acos->Asin->Atan->Atan2->Ceiling->Cos...Рефлексия статических типов
Если вы введете
System.ConsoletnullТуре.GetType(typeName)typeofSystem.ТуреSystem.ConsoleType t = Type.GetType(typeName);if (t == null && typeName.Equals("System.Console", StringComparison.OrdinalIgnoreCase)){ t = typeof(System.Console);}Рефлексия обобщенных типов
При вызове
Type.GetType()'System.Collections.Generic.List<T>System.Collections.Generic.List`1