Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
// Применение типа AssemblyName для определения отображаемого имени.
AssemblyName asmName;
asmName = new AssemblyName();
asmName.Name = "CarLibrary";
Version v = new Version("1.0.0.0");
asmName.Version = v;
Assembly a = Assembly.Load(asmName);
Чтобы загрузить сборку .NET Framework (не .NET Core), в параметре
Assembly.Load()
PublicKeyToken
FrameworkAssemblyViewer
Microsoft.EntityFrameworkCore
dotnet new console -lang c# -n FrameworkAssemblyViewer
-o .FrameworkAssemblyViewer -f net5.0
dotnet sln .Chapter17_AllProjects.sln add .FrameworkAssemblyViewer
dotnet add .FrameworkAssemblyViewer
package Microsoft.EntityFrameworkCore -v 5.0.0
Вспомните, что в случае ссылки на другую сборку копия этой сборки помещается в выходной каталог ссылаемого проекта. Скомпилируйте проект с применением CLI:
dotnet build
После создания проекта, добавления ссылки на
EntityFrameworkCode
using System;
using System.Linq;
using System.Reflection;
Console.WriteLine("***** The Framework Assembly Reflector App *****n");
// Загрузить Microsoft.EntityFrameworkCore.dll
var displayName =
"Microsoft.EntityFrameworkCore, Version=5.0.0.0,
Culture="", PublicKeyToken=adb9793829d
dae60";
Assembly asm = Assembly.Load(displayName);
DisplayInfo(asm);
Console.WriteLine("Done!");
Console.ReadLine();
private static void DisplayInfo(Assembly a)
{
Console.WriteLine("***** Info about Assembly *****");
Console.WriteLine($"Asm Name: {a.GetName().Name}" ); // Имя сборки
Console.WriteLine($"Asm Version: {a.GetName().Version}"); // Версия сборки
Console.WriteLine($"Asm Culture:
{a.GetName().CultureInfo.DisplayName}"); // Культура сборки
Console.WriteLine("nHere are the public enums:");
// Список открытых перечислений.
// Использовать запрос LINQ для нахождения открытых перечислений.
Type[] types = a.GetTypes();
var publicEnums =
from pe in types
where pe.IsEnum && pe.IsPublic
select pe;
foreach (var pe in publicEnums)
{
Console.WriteLine(pe);
}
}
К настоящему моменту вы должны уметь работать с некоторыми основными членами пространства имен
System.Reflection
Понятие позднего связывания
Позднее связывание представляет собой прием, который позволяет создавать экземпляр заданного типа и обращаться к его членам во время выполнения без необходимости в жестком кодировании факта его существования на этапе компиляции. При построении приложения, в котором производится позднее связывание с типом из внешней сборки, нет причин устанавливать ссылку на эту сборку; следовательно, в манифесте вызывающего кода она прямо не указывается.
На первый взгляд значимость позднего связывания оценить нелегко. Действительно, если есть возможность выполнить "раннее связывание" с объектом (например, добавить ссылку на сборку и выделить память под экземпляр типа с помощью ключевого слова
new
Activator
Класс System.Activato
Класс
System.Activator
Activator.Createlnstance()
CreateInstance()
Туре