小编Rep*_*Dbg的帖子

不使用ref关键字替换参数的ref(使用IL)

我希望能够替换参数的对象引用,而不必使用ref关键字.

我避免使用ref的原因是保留了查找Add(T item)方法的集合初始化程序调用,我需要让集合类用它的接口的不同实现替换引用.

我尝试了几种不同的方法来做到这一点.首先,我尝试使用未记录的关键字__makeref,__refvalue并且__reftype.

其次,我尝试DynamicMethod用一些IL 来创建一个IL,它试图模仿我从一个带有ref参数的反汇编类似调用中观察到的东西.

以下是一些演示代码:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Reflection.Emit;
using System.Reflection;
interface IRecord
{
    string Name { get;}
}
class ImpA : IRecord
{
    public string Name { get { return "Implementation A"; } }
}
class ImpB : IRecord
{
    public string Name { get { return "Implementation B"; } }
}
class RecordList<T> : IEnumerable<T>
{
    //// Standard Add method (of course …
Run Code Online (Sandbox Code Playgroud)

c# il cil ref dynamicmethod

4
推荐指数
1
解决办法
495
查看次数

标签 统计

c# ×1

cil ×1

dynamicmethod ×1

il ×1

ref ×1