Описание тега reflection.emit

Пространство имен System.Reflection.Emit содержит классы, которые позволяют компилятору или инструменту генерировать метаданные и промежуточный язык Microsoft (MSIL) и, при необходимости, создавать PE-файл на диске.
1 ответ

Reflection.Emit Построение графа сущностей

Я потратил некоторое время, пытаясь построить граф сущностей с помощью Reflection.Emit. Создать сборку с новым плоским типом (классом), создать его экземпляр и использовать с отражением легко и работает отлично. Но когда дело доходит до построения с…
12 ноя '13 в 14:38
1 ответ

Создайте одноразовый метод во время выполнения

Моя программа создает в любое время новые методы (используя MethodBuilder с массивом байтов \IL), что он выполняет их один раз и отбрасывает ссылку на них. Я обнаружил, что на самом деле они не затронуты GC. Есть ли способ позволить GC собрать их ил…
21 июн '14 в 20:18
1 ответ

Использование делегата /DLR Lambdas для переопределения методов экземпляра?

Стремясь выучить F# и.Net, я поиграл с DLR, который должен быть выпущен. С этой целью я поигрался с рефлексией, пытаясь реализовать систему базовых типов, которая прекрасно интегрируется с clr. Хотя я могу создать простой тип, расширяющий Object, я …
1 ответ

Выполнить метод для постоянной сборки из динамической сборки

Можно ли вызвать метод, который находится на "нормальной" сборке из динамически созданной сборки? Например, сборка B динамически создается (через Emit) из сборки A, а сборка B должна вызывать статический метод, определенный в сборке A. public interf…
10 окт '14 в 16:46
1 ответ

Добавить атрибут для свойства созданного во время выполнения типа, используя отражение

Я пытаюсь создать тип во время выполнения, придерживаясь StuckAttribute атрибут каждого свойства, которое я добавляю в этот тип. Тип Builder: private TypeBuilder getTypeBuilder() { var typeSignature = "IDynamicFlattenedType"; var an = new AssemblyNa…
30 окт '15 в 18:11
1 ответ

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

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

Вызов метода на поле

Мне просто любопытно, как бы я вызвал метод в поле, используя Emit, У меня этот класс сгенерирован public class AClass : IDynamicProxyTestInterface { private DynamicProxy<IDynamicProxyTestInterface> proxy; public AClass(DynamicProxy<IDynami…
16 фев '13 в 07:22
1 ответ

Что может вызвать это ExecutionEngineException?

Я пытаюсь использовать Reflection.Emit для генерации класса-оболочки в динамической сборке. Автоматическое создание обертки является частью новой библиотеки с открытым исходным кодом, которую я пишу под названием "GoInterfaces". Класс-обертка реализ…
1 ответ

Получение конструктора по умолчанию для обобщенного абстрактного класса

У меня есть общий абстрактный базовый класс, из которого я хотел бы получить производный от динамического типа, созданного с помощью mirror.emit. Также мне нужно настроить конструктор по умолчанию для производного класса, чтобы инициализировать неко…
20 авг '10 в 07:11
1 ответ

VB > Reflection.Emit: наследовать от суперкласса и переопределить метод

Я сам пытался написать этот очень простой код, но он мне немного сложен (Reflection.Emit очень нов для меня), так что я здесь. Что мне нужно, так это целый класс, который наследует от суперкласса и переопределяет метод - все написано для того, чтобы…
19 авг '13 в 07:14
0 ответов

Очиститель настроек (или других свойств) прокси класса

Существует ли распространенная практика реализации для сокращения кода (особенно дублирующихся строк) здесь? public class Settings { private static settings = Properties.Settings.Default; public string MRUList { get { return settings["MRUList"]; } s…
22 дек '14 в 19:01
2 ответа

Как извлечь код класса IL из загруженной сборки и сохранить на диск?

Как мне извлечь код IL для классов, которые генерируются во время выполнения с помощью отражения, чтобы я мог сохранить его на диск? Если вообще возможно. У меня нет контроля над кодом, который генерирует эти классы. В конце концов, я хотел бы загру…
0 ответов

CIL инструкции неожиданное возвращаемое значение

Я пытаюсь создать il-инструкции вручную в учебных целях, но столкнулся с небольшой проблемой. У меня есть простая структура с интерфейсом: "MyInterface" с одним методом: "Handle", класс "AddTwo", который реализует "MyInterface" и класс "Program" с м…
02 июн '15 в 22:20
2 ответа

В C# как вызвать статический метод с помощью emit

Я пытаюсь использовать Emit для генерации кода сопоставления (сопоставление свойств из одного объекта в другой). У меня это работает, если два типа совпадают (исходный и целевой), но я не могу заставить его работать в случае, когда типы не совпадают…
19 апр '11 в 22:35
1 ответ

Почему я не могу войти в инструкцию Call во время отладки / разборки?

Разборка выглядит так: methShort( ref x, ref y ); 000007FF00163F67 lea r8,[rsp+34h] 000007FF00163F6C lea rdx,[rsp+30h] 000007FF00163F71 mov rcx,qword ptr [rsp+20h] 000007FF00163F76 mov rcx,qword ptr [rcx+8] 000007FF00163F7A mov rax,qword ptr [rsp+20…
30 апр '15 в 16:40
2 ответа

Экземпляры, использующие отражение

У меня есть класс с 2 свойствами. Один является List<double> а другой является Queue<double>, У меня есть только Type информация во время выполнения. Мне нужно создать экземпляр и заполнить оба свойства. Есть ли общий способ сделать это?…
09 дек '18 в 22:21
1 ответ

TargetException: объект не соответствует типу цели

Я получаю эту странную ошибку, когда я пытаюсь этот код: class SomeClass { public decimal ClientCode { get; set; } public DateTime Date { get; set; } public override int GetHashCode() { int sum = 0; foreach (var p in GetType().GetProperties()) { var…
14 фев '14 в 12:50
1 ответ

Как перевести создание нового объекта?

Не так давно я начал учиться использовать пространство имен System.Reflection.Emit. Я сейчас пытаюсь перевести этот код для использования ILGenerator: MyClass c = new MyClass("MyClass"); c.Do(":D"); Для этого куска кода у меня есть три вопроса: как …
27 мар '12 в 16:12
1 ответ

Reflection.Emit.ILGenerator::Emit, вызов метода из сторонней библиотеки.net

Я пытаюсь создать простой компилятор.net для образовательных целей. После разбора, сканирования и сборки AST я генерирую сборку.net используя Reflection.Emit.ILGenerator, Вот мой пример кода для генерации сборки: static void Main(string[] args) { st…
07 май '13 в 13:37
1 ответ

Я сделал ошибку в этом IL, которого я не вижу?

Я работаю над компилятором, используя System.Reflection.Emit, и я получаю ошибки ограничения JIT, я не могу понять. Проблема возникает в моей реализации дескрипторов функций. Т.е. генерация кода для function foo() { } f = foo; f(); Из-за не зависящи…
04 фев '13 в 16:02