Описание тега ilgenerator

2 ответа

Установка подчиненного свойства объекта с помощью ILGenerator.Emit

У меня есть некоторый код, который использует IlGenerator.Emit для создания и заполнения универсального объекта с использованием устройства чтения данных. Это прекрасно работает, однако мне нужно расширить его для заполнения простых дочерних объекто…
28 сен '14 в 17:27
1 ответ

Common Language Runtime обнаружил недопустимую программу - ILGenerator

В основном я пытаюсь десериализовать данные, которые находятся внутри байтового массива, в объекты. Я пытаюсь использовать метод GetString кодировки UTF8 для чтения строки. Вот часть моего кода: var mm = new DynamicMethod("get_value", typeof(object)…
03 янв '14 в 03:15
1 ответ

Вызвать метод для статического поля, используя генератор IL в отражении C#

Я создаю новый Type с помощью TypeBuilder из C# отражения. Проблема, которая у меня есть сейчас, заключается в том, как создать тело метода для вызова метода в статическом поле. Прямо сейчас мой сгенерированный (во время выполнения) класс выглядит т…
22 июн '16 в 15:20
2 ответа

Почему Calli быстрее делегатского звонка?

Я играл с Reflection.Emit и узнал о малоиспользуемых EmitCalli, Заинтригованный, я подумал, а не отличается ли он от обычного вызова метода, поэтому я добавил следующий код: using System; using System.Diagnostics; using System.Reflection.Emit; using…
05 май '11 в 05:22
5 ответов

Как изменить коробочную структуру с помощью IL

Представьте, что у нас есть изменчивый struct (да, не начинай): public struct MutableStruct { public int Foo { get; set; } public override string ToString() { return Foo.ToString(); } } Используя отражение, мы можем взять коробочный экземпляр этого …
21 сен '13 в 21:40
0 ответов

Использование ILGenerator для генерации метода для копирования и преобразования свойств объекта дает InvalidProgramException

Я пытаюсь сгенерировать метод, который будет копировать свойства из одного универсального объекта в другой, и если тип свойства отличается, я хочу, чтобы он использовал TypeConverter для преобразования значения свойства.В конце концов я хочу увеличи…
12 мар '18 в 07:54
2 ответа

NullReferenceException в Object.Equals(Объект, Объект)

ситуация Я генерирую обертки с помощью ILGenerator. я использую Object.Equals(Object, Object) Для реализации равенства сравнивают поля оболочки. Отладчик выбрасывает NullReferenceException со следующей трассировкой стека. at System.Object.Equals(Obj…
1 ответ

Вызовите метод, когда происходит общее событие

Я сталкиваюсь с проблемой при попытке реализовать вызов метода, вызванного событием, которое должно быть определено во время выполнения. Я нашел этот ответ: Перенаправление на динамический метод из универсального обработчика событий и реализовал это…
03 дек '15 в 15:13
1 ответ

Как написать класс C# с Reflection.Emit динамически в соответствии с IL

Предположим, у нас есть интерфейс: public interface ICalculator { decimal Calculate(decimal x, decimal y); } логика вычислений реализована в коде javascript (на самом деле это TypeScript), мы хотим динамически создать следующую реализацию, используя…
08 апр '15 в 03:47
2 ответа

ILGenerator ловит исключения не работает

Я создаю обертки для типов с помощью System.Reflection.Emit, В какой-то момент возможно, что исходный объект выдает ошибку при доступе (FaultException) и ошибка должна быть поймана моей try { } catch (Exception e) { } который я реализовал, но это не…
2 ответа

Преобразовать код C#

Мне нужно смоделировать в коде C# (с ilGenerator.Emit) следующую функцию public void AssignAttribute(ref ValueHolder output, Assignment assignment) { ResultAttribute attribute = null; if ( (attribute = output.MultipleResults.Find(delegate(ResultAttr…
01 окт '09 в 09:36
1 ответ

Исключение при попытке выполнить сгенерированный код

Я реализую конструктор для динамического типа, но когда я выполняю код, он выдает мне исключение, что IL-код поврежден (FatalExecutionError). IL-код Рабочая часть: .method assembly specialname rtspecialname instance void .ctor ( object '', object ''…
01 мар '12 в 15:37
1 ответ

Могу ли я использовать OpCodes.Ldsfld без использования FieldInfo?

Я хочу избежать использования GetType и GetField. Могу ли я просто использовать строку с Ldsfld? Я включил макет того, что я пытаюсь сделать ниже. Как вы видите, я новичок в IL Generation - я пытаюсь убрать часть стоимости отражения в моей заявке. u…
21 мар '16 в 22:05
1 ответ

Нет доступа к DLL при создании IL Generator

Я создал фиктивную DLL. Я ожидал, что смогу получить доступ S1 в пространстве имен. Я вижу свою функцию и могу видеть структуру с il dasm, когда она находится в exe-форме. using System; using System.Collections.Generic; using System.Linq; using Syst…
11 мар '13 в 02:45
1 ответ

Почему необходимо загружать каждый аргумент в стек в методе CIL?

В моем приложении мне нужно динамически создать тип, который содержит несколько свойств. Мне известно, что в таких случаях необходимо сгенерировать CIL для методов получения и установки свойства с помощью ILGenerator. Больше методом проб и ошибок, ч…
12 авг '10 в 20:07
2 ответа

ILGenerator создает экземпляр объекта и вызывает метод экземпляра

Я пытаюсь создать экземпляр универсального типа и вызвать метод для этого экземпляра. Затем верните результат метода. var genericType = typeof(GenericType<>).MakeGenericType(typeof(TOutput)); il.DeclareLocal(genericType); var instanceMethod = …
26 июл '17 в 17:41
1 ответ

Почему ILGenerator вставляет инструкцию Leave в оператор Foreach

Я генерирую следующий код: public override void Map(IEnumerable enumerable1) { List<int> list = new List<int>(); foreach (object obj2 in enumerable1) { } } через Emit Вот полный код: MethodBuilder mapMethod = typeBuilder.DefineMethod("Ma…
09 мар '15 в 12:22
1 ответ

Использование System.Reflection.Emit.ILGenerator для вызова Random в VB.Net?

Я генерирую выходные данные для исполняемого файла.Net с моего собственного языка... код операции (называемый "Случайный"), который переводится с моего языка, должен создать случайное число в пределах определенного диапазона. Цель моего кода - созда…
11 июн '11 в 19:43
1 ответ

Свойство ILGenerator не является экземпляром

Я хотел бы получить это: .property instance class [WorldTool.Core]WorldTool.IInputPort SomePort { .get instance class [WorldTool.Core]WorldTool.IInputPort WorldTool.Core.Tests.SomeOperatorInstance::get_SomePort() } Но я получаю это: .property class …
31 дек '13 в 04:22
2 ответа

Как вызвать "нормальный" метод через ILGenerator.Emit*?

Возможно ли для DynamicMethod вызывать (например, через ILGenerator.EmitCall - или аналогичный) - "нормальный" метод, например Private Sub BlahBlah(ByVal obj as Object)? заранее спасибо