首页 > TAG信息列表 > reflection-emit

C#-公共语言运行时检测到无效程序-ILGenerator

基本上,我试图将字节数组中的数据反序列化为对象.我正在尝试使用UTF8编码的GetString方法来读取字符串.这是我的代码的一部分: var mm = new DynamicMethod("get_value", typeof(object) , new Type[] { typeof(byte[]), typeof(int), typeof(int), typeo

我如何创建一个新的异常类并将其抛出

在C#.NET中,我如何创建一个新的异常类并在运行时抛出它.我需要在运行时基于接收到的字符串生成异常类名称.似乎我应该使用Reflection.emit,但是我不知道该怎么做.解决方法:虽然我不了解使用反射发射创建异常类型的目的,但创建异常类型与创建任何其他类型没有什么不同: // Build an

c#-使用Reflection.Emit创建的动态程序集崩溃,退出代码为-532462766

我一直按照this article生成动态程序集,如下所示: var directory = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)); var file = new FileInfo(Path.Combine(directory.FullName, @"MyDynamicAssembly.exe")); var domain = AppDomain.Current

静态类的TypeAttribute

我正在尝试通过Reflection.Emit定义新类型,但是我找不到设法将类型定义为static的TypeAttribute. 例如,假设我要创建以下类型: public static class Hello { } 我可以识别以下属性: TypeAttributes.Class TypeAttributes.Public 但是和那有什么不同 public class Hello { } 我

CodeGo.net>如何定义“值”属性设置器参数

使用以下C#代码: public interface IFoo { int Bar { get; set; } } 属性设置器签名编译为: .method public hidebysig specialname newslot abstract virtual instance void set_X ( int32 'value' ) cil managed { } 用ILSpy或i

c#-用于动态生成的程序集的InternalsVisibleTo,但具有强大的命名能力

我有一个使用动态代码生成来创建代理类的项目.此代理类使用项目的内部类(这样就不会暴露实现细节),因此我将InternalsVisibleTo与动态生成的程序集的名称一起使用.直到最近,当我的客户强行要求所有装运的装配都必须使用强名称时,这种方法才能正常工作. 出现此问题是因为,为了将Inte

C#-在方法参数上设置名称

我正在使用Reflection.Emit制作一个exe.到目前为止,我可以创建一个可以运行的CIL PE. (它只是将一个字符串输出到Console.WriteLine.)但是main方法的参数是自动生成的(A_0). .method public static void Main(string[] A_0) cil managed { .entrypoint // Code size 12

c#-使用Reflection.Emit创建一个方法,然后调用它

这听起来很明显,但我遇到了很多困难.基本上,我正在做的是使用Reflection.Emit生成一个方法,然后我想调用它.到目前为止,我已经建立了这样的方法,但是在方法建立之后,我无法获得对该方法的引用,因为“在创建类型之前,不支持所调用的成员.” 这基本上是我要做的: AssemblyBuilder ass

发射操作可能会破坏运行时的稳定性,以增加字段

我用相同的标题搜索了很多问题,但没有找到适合我的答案. 所以我只是想增加我的类实例的字段: class EmitTest { private int _calls = 0; public EmitTest() { var callsFieldInfo = GetType().GetField("_calls", BindingFlags.NonPublic | BindingFlags.Ins

为什么我无法在C#中使用IL生成来创建对象的实例?

我有以下课程: private sealed class Person { public string Name { get; } public int Age { get; } public Person(string name) { Name = name; } public Person(string name, int age) { Name = name; Age = age;

c# – 获取已关闭的未创建泛型方法的标记

我正在使用MethodBuilder.SetMethodBody()来发出方法,而不是使用内置的ILGenerator.原因主要是对异常处理信息进行更多控制,并且通常对发出的操作码有更多控制. 在我需要调用方法的所有情况下,我正在调用ModuleBuilder.GetMethodToken()并且它工作正常,除非我需要调用一个未创建的

使用Reflection模仿C#数组初始化程序行为

使用ILDasm对一些C#代码进行反向工程,我发现编译器使用System.Runtime.CompilerServices.RuntimeHelper.InitializeArraymethod来初始化包含基本类型的几个常量值的数组. 看起来它为每个数组大小创建一个特殊的结构,以字节为单位,并用[StructLayout]属性标记它.这非常简单.但是有一

c# – 为什么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("Map", Me

c# – 实例方法的’this’参数可以是无类型的(即System.Object)吗?

我正在使用System.Reflection.Emit的TypeBuilder来发出一堆带有实例方法的自定义.NET类.例如: public class EmittedClass { public bool TryGetName(out string value) { ... } public bool TryGetAge(out int value) { ... } } 所有方

c# – Reflection.Emit使用参数创建对象

我正在创建一个动态函数,在给定构造函数params的object []的情况下在运行时创建一个对象.我一直得到通用异常’操作可能会破坏运行时’,我看不出我做错了什么. 如果创建的对象不需要构造函数参数,则该方法可以正常工作 – 因此问题必须在for循环中的代码中. 代码索引到给定的对象[]

c# – Reflection Emit创建类实例

我想使用Reflection Emit来创建具有任意构造函数参数的类的实例.这是我的代码的样子: public delegate object ObjectActivator(params object[] args); static void Main(string[] args) { var ao = new { ID = 10000, FName = "Sample", SName = "Name" }; var t = ao.Ge

c# – 使用Reflection.Emit实例化具有通用参数的通用类型

我的目标是使用反射发射来构造泛型类型,其中包含创建的泛型方法的泛型参数 所以创建的泛型方法的最终结果类似于 void DoSomeThing<T>(T arg){ var list=new List<T>(); } 所以我需要的是用于发出这段代码的代码 new List<T> 这是我的尝试 var _assemblyName

c# – 使用Reflection.Emit将自定义属性复制到另一个方法

我正在尝试基于现有接口生成一组新的wcf接口. 我正在使用Reflection.Emit命名空间来完成此任务.我的问题是如何将旧的自定义属性从一个方法复制到新方法.我见过的每个SetCustomAttributes()示例都需要事先知道属性类型.我需要在运行时发现属性类型.有什么想法吗?解决方法:您(frjames

c# – 将一个对象属性值转移到另一个对象属性值

最重要的是,我知道AutoMapper,我不想使用它.因为我正在学习C#而我想深入了解它.所以我想尝试自己做这个问题(下面解释). 但是,我正在尝试创建一个属性复制器来处理一种类型属性的值到另一种属性,如果该属性具有相同的名称和类型,并且可以从源中读取并在目标中可写.我正在使用type.G

c# – IL使用Reflection.Emit调用params object []参数的方法

我正在编写一个需要后续类型构建的库.库使用平台.Net core 2.0 我使用Reflection.Emit生成某些类型的问题 public class GeneratedA : A, IA { public void DoInterface(string arg0, bool arg1, int arg2, object arg3, List<float> arg4, params object[] otherArgs) {

c# – 调用基类的事件处理程序的MSIL是什么?

我有一个名为EventConsumer的类,它定义一个事件EventConsumed和一个OnEventConsumed方法,如下所示: public event EventHandler EventConsumed; public virtual void OnEventConsumed(object sender, EventArgs e) { if (EventConsumed != null) EventConsumed(this,

c# – 由于一些无效的IL代码,将简单类转换为IL失败了?

我正在尝试将这个简单的类转换为IL代码: public class IL { Dictionary<string, int> props = new Dictionary<string, int>() { {"1",1} }; } 事实上,在尝试使用Emit动态创建类之前,我使用ILDasm来了解IL指令.结果显示: .class public auto ansi beforefieldinit IL extends