我希望在动态类型中实现一个克隆方法,但问题是在我声明typeBuilder.CreateType()之前我不能说新的类型 - 我得到异常:System.NotSupportedException:被调用的成员在创建类型之前不支持。
有解决方法吗?
编辑: 这就是我用Emit复制的内容。克隆工作本身是在受保护的构造函数中完成的,并不是外部完成的,因为我需要复制私有成员。
public class SomeOperatorInstance : OperatorInstance, ISomeOperatorInstance
{
public SomeOperatorInstance() { }
internal SomeOperatorInstance(SomeOperatorInstance source) : base(source) { }
public override IOperatorInstance Clone()
{
return new SomeOperatorInstance(this);
}
}
答案 0 :(得分:1)
问题是我试图使用反射来获取构造函数。我应该做的(以及有效的)是我为它设置了我为该类型设置的ConstructorBuilder。这允许我在实际创建类型之前使类型实例化。
简而言之:不要使用反射来获取构造函数;改为使用ConstructorBuilder。