Читать книгу 📗 "Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю"
using System;using System.Reflection;using System.IO; // Для определения FileNotFoundException.Console.WriteLine("***** External Assembly Viewer *****");string asmName = "";Assembly asm = null;do{ Console.WriteLine("nEnter an assembly to evaluate"); // Пригласить ввести имя сборки. Console.Write("or enter Q to quit: "); // или Q для завершения // Получить имя сборки. asmName = Console.ReadLine(); // Пользователь желает завершить программу? if (asmName.Equals("Q",StringComparison.OrdinalIgnoreCase)) { break; } // Попробовать загрузить сборку. try { asm = Assembly.LoadFrom(asmName); DisplayTypesInAsm(asm); } catch { Console.WriteLine("Sorry, can't find assembly."); // Сборка не найдена. }} while (true);static void DisplayTypesInAsm(Assembly asm){ Console.WriteLine("n***** Types in Assembly *****"); Console.WriteLine("->{0}", asm.FullName); Type[] types = asm.GetTypes(); foreach (Type t in types) { Console.WriteLine("Type: {0}", t); } Console.WriteLine("");}Если вы хотите проводить рефлексию по
CarLibrary.dllExternalAssemblyReflectorCarLibrary.dllbinDebugnet5.0CarLibrary***** External Assembly Viewer *****Enter an assembly to evaluateor enter Q to quit: CarLibrary***** Types in Assembly *****->CarLibrary, Version=1.0.0.1, Culture=neutral, PublicKeyToken=nullType: CarLibrary.MyInternalClassType: CarLibrary.EngineStateEnumType: CarLibrary.MusicMediaType: CarLibrary.CarType: CarLibrary.MiniVanType: CarLibrary.SportsCarМетод
LoadFrom()С:MyAppMyAsm.dllCarLibrary.dllС:MyCodeС:MyCodeCarLibraryРефлексия сборок инфраструктуры
Метод
Assembly.Load()Имя (,Version = <старший номер>.<младший номер>.<номер сборки>.сномер редакции>)(,Culture = <маркер культуры>) (,PublicKeyToken = <маркер открытого ключа>)При создании отображаемого имени соглашение
PublicKeyToken=nullCulture=""// Загрузить версию 1.0.0.0 сборки CarLibrary, используя стандартную культуруAssembly а = Assembly.Load("CarLibrary, Version=l.0.0.0, PublicKeyToken=null, Culture=""" );// В C# кавычки должны быть отменены с помощью символа обратной косой чертыКроме того, следует иметь в виду, что пространство имен
System.ReflectionAssemblyNameAssemblyNameSystem.VersionAssembly.Load()