reflection.emit

    0热度

    1回答

    我想做的事情是这样的:我用Google搜索 interface IMyInterface { void DoSomething(); string SaySomeWords(IEnumerable<string> words); } public class InterfaceImplFactory { public v

    0热度

    1回答

    With Mono.Cecil看起来很简单,我们只需将目标MethodDefinition的Body设置为源MethodDefinition的Body即可。对于简单的方法,这工作正常。但是对于一些使用自定义类型的方法(例如初始化新对象),它不起作用(在编写程序集时抛出异常)。 这里是我的代码: //in current app public class Form1 { public s

    1热度

    1回答

    我希望能够将方法链接到所有类型的委托。我试图用refelection.emit做到这一点,并将动态方法与delagate的占用空间相链接,将其添加到委托中,并让此动态方法使用所有参数调用常规函数。但我希望有一个easyer方式来做到这一点。 (我没有包括reflection.emit代码becouse是不是我想帮助,这仍然是一个原始试) 这是我想要得到结果的一个例子: public class F

    1热度

    1回答

    我目前正在尝试为使用Reflection.Emit的接口创建一个“模拟”。 因此我创建了一个基类,用于所有动态生成的模拟。 对于接口中的属性,我想在返回属性值的基类中调用“Get”方法。 public class Mock { public static TIf Wrap<TIf>() where TIf : class { if (!typeof(TIf).IsI

    2热度

    1回答

    我正在使用ILGenerator创建一个函数,并在发出指定实例时设置属性的值。这是我正在处理的解决方案的性能方面的主要原因。我有一个基本的代码形式,它应该采用2个对象并通过IL加载它们以调用设置函数。我发现的问题是我通过设置的值似乎被忽略,另一个似乎产生的值被设置在它的位置。 这是LinqPad提出的基本用法的例子,我已经创建演示此问题: void Main() { var insta

    2热度

    1回答

    我需要处理从反射导入的类的事件。为此,我使用所需参数类型创建一个动态方法,然后将其转换为委托并添加为事件处理程序。 我在动态方法中唯一需要做的就是调用一个编译方法,该方法接收可变数量的参数。因此,我'包'任何类型的任何数量的参数传递给一个编译的方法。 问题来了:似乎我需要在IL操作码中手动创建数组,并用参数填充(这有点复杂),而不是仅仅推送堆栈上的所有参数(这很简单)。 下面是代码(C++/CLI

    1热度

    1回答

    我的错误中不支持调用的成员,当我运行这段代码: var asmName = new AssemblyName("DynamicAssembly"); var asmBuilder = AssemblyBuilder.DefineDynamicAssembly (asmName, AssemblyBuilderAccess.Run); var moduleBuilde

    1热度

    1回答

    对于性能优化,我使用以下代码动态地创建每个用户请求新类型: var dynamicAssemblyName = new AssemblyName(assemblyName); AssemblyBuilder dynamicAssembly = AssemblyBuilder.DefineDynamicAssembly(dynamicAssemblyName, AssemblyBuilderAcc

    0热度

    2回答

    我在运行时创建一个类,并且一些类型已经在ModuleBuilder内部创建,我想重用它们,但我只有类型而不是TypeBuilder(这是我需要为了改变它) 有没有办法从Type转换成TypeBuilder? Type moduleType = ModuleBuilder.GetType(inXmlTemplateProperty.PropertyName); if (moduleTyp

    2热度

    1回答

    我试图用一些资源生成一个程序集文件。我正在使用System.Reflection.Emit.ModuleBuilder来定义资源。 AssemblyBuilder保存程序集时不会出现任何错误,但是当我尝试读取资源时,ResourceManager没有任何条目,它的ResourceSets。我不确定AssemblyBuilder不保存更多资源,或者我的资源阅读代码有问题。 集生成代码: public