_COMPlusExceptionCode -532462766创建ModuleBuilder.DefineType时

时间:2014-06-09 09:57:39

标签: c#-4.0 reflection com system.reflection

我正在尝试基于基类类型动态创建一个类。

以下是导致问题的代码

     TypeBuilder tb = DynamicType.CreateType(DynamicType.modBuilder, typeof(ResultViewModelVersioned).ToString());

创建类型的功能如下

     public static TypeBuilder CreateType(ModuleBuilder modBuilder, string typeName)
    {
        TypeBuilder typeBuilder = modBuilder.DefineType(typeName,
                    TypeAttributes.Public );
        return typeBuilder;
    }

但是我在上面的函数中定义类型时得到了异常_COMPlusExceptionCode -532462766。

这是我创建动态对象的函数

public object GetViewModel<TresultType, TviewModelType>(TresultType result, TviewModelType ViewModel)
{
    if (DynamicType.asmBuilder == null)
        DynamicType.GenerateAssemblyAndModule();
    var finalType = DynamicType.modBuilder.GetType("Beacon11");

    TypeBuilder tb = DynamicType.CreateType(DynamicType.modBuilder, ViewModel.GetType().ToString());
    tb.SetParent(typeof(ResultViewModelVersionable));

    var sourceType = result.GetType();
    var targetType = tb.GetType();

    foreach (var property in sourceType.GetProperties())
    {
        var targetProperty = targetType.GetProperty(property.Name);
        if (targetProperty == null)
        {  
            DynamicType.CreateProperty(tb, property.Name, property.GetType());
        }
    }

    finalType = tb.CreateType();
    var Methods = tb.GetMethods();
    Object obj = Activator.CreateInstance(finalType);
    return obj;
}

我从下面的链接

获得了创建DynamicType的代码

http://geekswithblogs.net/rgupta/archive/2008/12/01/dynamically-creating-types-using-reflection-and-setting-properties-using-reflection.emit.aspx

非常感谢任何帮助。如果您需要任何进一步的信息,请告诉我。

0 个答案:

没有答案