我动态地对具有泛型方法的泛型类型(填充它的契约)进行子类化.我试图调用这个泛型方法,但我生成的程序集有错误.尝试打开程序集时,Reflector崩溃,并且此代码段无法运行.
我得到的例外是:
尝试加载格式不正确的程序.(HRESULT异常:0x8007000B)
任何帮助,将不胜感激.我将安装PEVerify来查看生成的代码.
using System;
using System.Reflection;
using System.Reflection.Emit;
public class TestClass<TFirst>
{
public void TestMethod<TSecond>()
{
Console.WriteLine("It works");
}
}
public class Program
{
static void Main(string[] args)
{
// create a dynamic assembly and module
var assemblyName = new AssemblyName("DynamicAssembly");
var assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.RunAndSave);
var module = assemblyBuilder.DefineDynamicModule("DynamicAssembly.dll");
// public class Voodoo.Dynamic.Class : TestClass<object>
var testClass = typeof(TestClass<>);
var testClassOfObject = testClass.MakeGenericType(typeof(object));
var typeBuilder = module.DefineType(
"Voodoo.Dynamic.Class",
TypeAttributes.Public | TypeAttributes.Class,
testClassOfObject);
// public void Run()
var …Run Code Online (Sandbox Code Playgroud)