使用 TypeBuilder 生成将自身带入构造函数的构造函数

Generate constructor that takes itself in constructor with TypeBuilder

我最近开始使用 Typebuilder,我希望创建一个构造函数来采用我当前正在构建的类型。

在代码中你可以这样写:

public class Foo 
{
    public Foo(Foo fooToCopy) 
    {
        // Do copy code here
    }
}

我想不出一种方法可以在构建时引用正在构建的类型。我已经尝试过早地创建类型以便在指定构造函数时能够引用它,但是一旦它被构造我就无法继续编辑类型。

有什么方法可以使用 TypeBuilder 完成此操作吗?

TypeBuilder 继承了 Type,所以任何你想引用正在构建的类型的地方你都可以提供构建器本身:

var ctor = typeBuilder.DefineConstructor(
  MethodAttributes.Public,
  CallingConventions.Standard, 
  new Type[] { typeBuilder }
);