Динамические сборки в .NET
От: Studentozzz  
Дата: 01.05.07 22:18
Оценка:
выползает ошибка("Access is denied: 'EC.Math.CodeBuilder'.":"") в CodeGenClass.CreateType();
public static CodeBuilder BuildFunc(TreeBuilder.Node Tree)
        {

            AssemblyName assemblyName = new AssemblyName();
            assemblyName.Name = "CodeGenClassAssembly";
            AssemblyBuilder assembly=Thread.GetDomain().DefineDynamicAssembly(assemblyName,
                AssemblyBuilderAccess.Run);

            ModuleBuilder module=assembly.DefineDynamicModule("CodeGenModule");

            TypeBuilder CodeGenClass = module.DefineType("CodeGenClass", TypeAttributes.Public, typeof(CodeBuilder));
            
            ConstructorBuilder constructor = CodeGenClass.DefineConstructor(
                MethodAttributes.Public, CallingConventions.Standard, null);
            
            ILGenerator constructorIL = constructor.GetILGenerator();
            constructorIL.Emit(OpCodes.Ldarg_0);
            ConstructorInfo superConstructor = typeof(Object).GetConstructor(new Type[0]);
            constructorIL.Emit(OpCodes.Call, superConstructor);
            constructorIL.Emit(OpCodes.Ret);

            
            MethodBuilder mb = CodeGenClass.DefineMethod("Calc",
                MethodAttributes.PrivateScope
                |MethodAttributes.FamANDAssem
                |MethodAttributes.Family
                |MethodAttributes.Public
                |MethodAttributes.Virtual
                |MethodAttributes.HideBySig
                |MethodAttributes.ReuseSlot,typeof(double),new Type[]{typeof(double), typeof(double), typeof(double)});

            ILGenerator IL=mb.GetILGenerator();

            FuncCodeGen(Tree,IL);
            IL.Emit(OpCodes.Ret);


                        Type t = CodeGenClass.CreateType();  //вот здесь она и вылезает

            return (CodeBuilder)Activator.CreateInstance(t);
        }



Весь проект: http://ifolder.ru/1804376

Уже какой день любовью занимаюсь — так и не понял в чем ошибка.
Заранее благодарю всех, кто уделит время моей проблеме.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.