Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
Тут можно читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте mir-knigi.info (Mir knigi) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
constructorIl.Emit(OpCodes.Stfld, msgField); constructorIl.Emit(OpCodes.Ret);<b> // Создать стандартный конструктор.</b> helloWorldClass.DefineDefaultConstructor( MethodAttributes.Public);<b> // Создать метод GetMsg().</b> MethodBuilder getMsgMethod = helloWorldClass.DefineMethod( "GetMsg", MethodAttributes.Public, typeof(string), null); ILGenerator methodIl = getMsgMethod.GetILGenerator(); methodIl.Emit(OpCodes.Ldarg_0); methodIl.Emit(OpCodes.Ldfld, msgField); methodIl.Emit(OpCodes.Ret);<b> // Создать метод SayHello().</b> MethodBuilder sayHiMethod = helloWorldClass.DefineMethod( "SayHello", MethodAttributes.Public, null, null); methodIl = sayHiMethod.GetILGenerator(); methodIl.EmitWriteLine("Hello from the HelloWorld class!"); methodIl.Emit(OpCodes.Ret);<b> // Выпустить класс HelloWorld.</b> helloWorldClass.CreateType(); return builder;}Выпуск сборки и набора модулей
Тело метода начинается с установления минимального набора характеристик сборки с применением типов
AssemblyNameVersionSystem.ReflectionAssemblуBuilderAssemblyBuilder.DefineDynamicAssembly()При вызове метода
DefineDynamicAssembly()
Следующая задача связана с определением набора модулей (и имени) для новой сборки. Метод
DefineDynamicModule()ModuleBuilder // Создать новую сборку. var builder = AssemblyBuilder.DefineDynamicAssembly( assemblyName,AssemblyBuilderAccess.Run);Роль типа ModuleBuilder
Тип
ModuleBuilderModuleBuilder
Основным членом класса
ModuleBuilderDefineType()System.Reflection.TypeAttributesTypeAttributes
Выпуск типа HelloClass и строковой переменной-члена
Теперь, когда вы лучше понимаете роль метода
ModuleBuilder.CreateType()HelloWorld<b>// Определить открытый класс по имени HelloWorld.</b>TypeBuilder helloWorldClass = module.DefineType("MyAssembly.HelloWorld", TypeAttributes.Public);<b>// Определить закрытую переменную-член типа String по имени theMessage.</b>FieldBuilder msgField = helloWorldClass.DefineField( "theMessage", Type.GetType("System.String"), attributes: FieldAttributes.Private);Обратите внимание, что метод
TypeBuilder.DefineField()FieldBuilderTypeBuilderDefineConstructor()ConstructorBuilderDefineProperty()PropertyBuilderВыпуск конструкторов
Как упоминалось ранее, для определения конструктора текущего типа можно применять метод
TypeBuilder.DefineConstructor()HelloClassILGeneratorGetILGenerator()ConstructorBuilderПомещение кода CIL в реализацию членов осуществляется с помощью метода
Emit()ILGeneratorEmit()OpcodesOpcodes.Ret.Opcodes.StfidOpcodes.CallПохожие книги на "Язык программирования C#9 и платформа .NET5", Троелсен Эндрю
Книги похожие на "Язык программирования C#9 и платформа .NET5" читать онлайн бесплатно полные версии.
Троелсен Эндрю читать все книги автора по порядку
Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки mir-knigi.info.