Пример #1
0
 public ILConstructorDebugImpl(ConstructorBuilder constructor, IILGenForbidenInstructions forbidenInstructions, SourceCodeWriter sourceCodeWriter)
 {
     _constructor = constructor;
     _sourceCodeWriter = sourceCodeWriter;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength = 64;
 }
Пример #2
0
 public ILDynamicMethodDebugImpl(string name, Type delegateType, Type thisType)
 {
     _delegateType = delegateType;
     _expectedLength = 64;
     var mi = delegateType.GetMethod("Invoke");
     var uniqueName = ILDynamicTypeDebugImpl.UniqueName(name);
     _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(uniqueName), AssemblyBuilderAccess.RunAndSave, DynamicILDirectoryPath.DynamicIL);
     _moduleBuilder = _assemblyBuilder.DefineDynamicModule(uniqueName + ".dll", true);
     var sourceCodeFileName = Path.Combine(DynamicILDirectoryPath.DynamicIL, uniqueName + ".il");
     _symbolDocumentWriter = _moduleBuilder.DefineDocument(sourceCodeFileName, SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft);
     _sourceCodeWriter = new SourceCodeWriter(sourceCodeFileName, _symbolDocumentWriter);
     Type[] parameterTypes;
     if (thisType != null)
     {
         parameterTypes = new[] { thisType }.Concat(mi.GetParameters().Select(pi => pi.ParameterType)).ToArray();
     }
     else
     {
         parameterTypes = mi.GetParameters().Select(pi => pi.ParameterType).ToArray();
     }
     _sourceCodeWriter.StartMethod(name, mi.ReturnType, parameterTypes, MethodAttributes.Static);
     _typeBuilder = _moduleBuilder.DefineType(name, TypeAttributes.Public, typeof(object), Type.EmptyTypes);
     _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
     _dynamicMethod = _typeBuilder.DefineMethod("Invoke", MethodAttributes.Public | MethodAttributes.Static, mi.ReturnType, parameterTypes);
     for (int i = 0; i < parameterTypes.Length; i++)
     {
         _dynamicMethod.DefineParameter(i + 1, ParameterAttributes.In, string.Format("arg{0}", i));
     }
 }
Пример #3
0
 public ILDynamicTypeImpl(string name, Type baseType, Type[] interfaces)
 {
     _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(name), AssemblyBuilderAccess.RunAndCollect);
     _moduleBuilder = _assemblyBuilder.DefineDynamicModule(name + ".dll", true);
     _typeBuilder = _moduleBuilder.DefineType(name, TypeAttributes.Public, baseType, interfaces);
     _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
 }
Пример #4
0
 public ILConstructorDebugImpl(ConstructorBuilder constructor, IILGenForbidenInstructions forbidenInstructions, SourceCodeWriter sourceCodeWriter)
 {
     _constructor          = constructor;
     _sourceCodeWriter     = sourceCodeWriter;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength       = 64;
 }
Пример #5
0
 public ILDynamicTypeImpl(string name, Type baseType, Type[] interfaces)
 {
     _assemblyBuilder      = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(name), AssemblyBuilderAccess.RunAndCollect);
     _moduleBuilder        = _assemblyBuilder.DefineDynamicModule(name + ".dll", true);
     _typeBuilder          = _moduleBuilder.DefineType(name, TypeAttributes.Public, baseType, interfaces);
     _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
 }
Пример #6
0
        public ILDynamicMethodDebugImpl(string name, Type delegateType, Type thisType)
        {
            _delegateType   = delegateType;
            _expectedLength = 64;
            var mi         = delegateType.GetMethod("Invoke");
            var uniqueName = ILDynamicTypeDebugImpl.UniqueName(name, 259 - (DynamicILDirectoryPath.DynamicIL.Length + 1 + 4));

            _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(uniqueName), AssemblyBuilderAccess.RunAndSave, DynamicILDirectoryPath.DynamicIL);
            _moduleBuilder   = _assemblyBuilder.DefineDynamicModule(uniqueName + ".dll", true);
            var sourceCodeFileName = Path.Combine(DynamicILDirectoryPath.DynamicIL, uniqueName + ".il");

            _symbolDocumentWriter = _moduleBuilder.DefineDocument(sourceCodeFileName, SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft);
            _sourceCodeWriter     = new SourceCodeWriter(sourceCodeFileName, _symbolDocumentWriter);
            Type[] parameterTypes;
            if (thisType != null)
            {
                parameterTypes = new[] { thisType }.Concat(mi.GetParameters().Select(pi => pi.ParameterType)).ToArray();
            }
            else
            {
                parameterTypes = mi.GetParameters().Select(pi => pi.ParameterType).ToArray();
            }
            _sourceCodeWriter.StartMethod(name, mi.ReturnType, parameterTypes, MethodAttributes.Static);
            _typeBuilder          = _moduleBuilder.DefineType(name, TypeAttributes.Public, typeof(object), Type.EmptyTypes);
            _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
            _dynamicMethod        = _typeBuilder.DefineMethod("Invoke", MethodAttributes.Public | MethodAttributes.Static, mi.ReturnType, parameterTypes);
            for (int i = 0; i < parameterTypes.Length; i++)
            {
                _dynamicMethod.DefineParameter(i + 1, ParameterAttributes.In, $"arg{i}");
            }
        }
Пример #7
0
        public ILConstructorImpl(ConstructorBuilder constructor, IILGenForbidenInstructions forbidenInstructions,
                                 string[] parameterNames)
        {
            _constructor          = constructor;
            _forbidenInstructions = forbidenInstructions;
            _expectedLength       = 64;

            DefineParameterNames(parameterNames);
        }
Пример #8
0
 public ILMethodDebugImpl(MethodBuilder method, SourceCodeWriter sourceCodeWriter, string name, Type returnType, Type[] parameters, IILGenForbidenInstructions forbidenInstructions)
 {
     _method = method;
     _sourceCodeWriter = sourceCodeWriter;
     _name = name;
     _returnType = returnType;
     _parameters = parameters;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength = 64;
 }
Пример #9
0
 public ILMethodDebugImpl(MethodBuilder method, SourceCodeWriter sourceCodeWriter, string name, Type returnType, Type[] parameters, IILGenForbidenInstructions forbidenInstructions)
 {
     _method               = method;
     _sourceCodeWriter     = sourceCodeWriter;
     _name                 = name;
     _returnType           = returnType;
     _parameters           = parameters;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength       = 64;
 }
Пример #10
0
 public ILDynamicTypeDebugImpl(string name, Type baseType, Type[] interfaces)
 {
     _name = name;
     var uniqueName = UniqueName(name);
     _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(uniqueName), AssemblyBuilderAccess.RunAndSave, "dynamicIL");
     _moduleBuilder = _assemblyBuilder.DefineDynamicModule(uniqueName + ".dll", true);
     var sourceCodeFileName = Path.GetFullPath("dynamicIL/" + uniqueName + ".il");
     _symbolDocumentWriter = _moduleBuilder.DefineDocument(sourceCodeFileName, SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft);
     _sourceCodeWriter = new SourceCodeWriter(sourceCodeFileName, _symbolDocumentWriter);
     _sourceCodeWriter.WriteLine(string.Format("class {0} : {1}{2}", name, baseType.ToSimpleName(), string.Concat(interfaces.Select(i => ", " + i.ToSimpleName()))));
     _sourceCodeWriter.OpenScope();
     _typeBuilder = _moduleBuilder.DefineType(name, TypeAttributes.Public, baseType, interfaces);
     _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
 }
Пример #11
0
 public ILDynamicTypeDebugImpl(string name, Type baseType, Type[] interfaces)
 {
     _name = name;
     var uniqueName = UniqueName(name, 259 - (DynamicILDirectoryPath.DynamicIL.Length + 1 + 4));
     _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(uniqueName), AssemblyBuilderAccess.RunAndSave, DynamicILDirectoryPath.DynamicIL);
     _moduleBuilder = _assemblyBuilder.DefineDynamicModule(uniqueName + ".dll", true);
     var sourceCodeFileName = Path.Combine(DynamicILDirectoryPath.DynamicIL, uniqueName + ".il");
     _symbolDocumentWriter = _moduleBuilder.DefineDocument(sourceCodeFileName, SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft);
     _sourceCodeWriter = new SourceCodeWriter(sourceCodeFileName, _symbolDocumentWriter);
     _sourceCodeWriter.WriteLine(
         $"class {name} : {baseType.ToSimpleName()}{string.Concat(interfaces.Select(i => ", " + i.ToSimpleName()))}");
     _sourceCodeWriter.OpenScope();
     _typeBuilder = _moduleBuilder.DefineType(name, TypeAttributes.Public, baseType, interfaces);
     _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
 }
Пример #12
0
        public ILDynamicTypeDebugImpl(string name, Type baseType, Type[] interfaces)
        {
            _name = name;
            var uniqueName = UniqueName(name);

            _assemblyBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(uniqueName), AssemblyBuilderAccess.RunAndSave, DynamicILDirectoryPath.DynamicIL);
            _moduleBuilder   = _assemblyBuilder.DefineDynamicModule(uniqueName + ".dll", true);
            var sourceCodeFileName = Path.Combine(DynamicILDirectoryPath.DynamicIL, uniqueName + ".il");

            _symbolDocumentWriter = _moduleBuilder.DefineDocument(sourceCodeFileName, SymDocumentType.Text, SymLanguageType.ILAssembly, SymLanguageVendor.Microsoft);
            _sourceCodeWriter     = new SourceCodeWriter(sourceCodeFileName, _symbolDocumentWriter);
            _sourceCodeWriter.WriteLine(
                $"class {name} : {baseType.ToSimpleName()}{string.Concat(interfaces.Select(i => ", " + i.ToSimpleName()))}");
            _sourceCodeWriter.OpenScope();
            _typeBuilder          = _moduleBuilder.DefineType(name, TypeAttributes.Public, baseType, interfaces);
            _forbidenInstructions = new ILGenForbidenInstructionsCheating(_typeBuilder);
        }
Пример #13
0
 public ILGenDebugImpl(ILGenerator ilGenerator, IILGenForbidenInstructions forbidenInstructions, SourceCodeWriter sourceCodeWriter)
 {
     _ilGenerator          = ilGenerator;
     _forbidenInstructions = forbidenInstructions;
     _sourceCodeWriter     = sourceCodeWriter;
 }
Пример #14
0
 public ILMethodImpl(MethodBuilder method, IILGenForbidenInstructions forbidenInstructions)
 {
     _method = method;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength = 64;
 }
Пример #15
0
 public ILGenImpl(ILGenerator ilGenerator, IILGenForbidenInstructions forbidenInstructions)
 {
     _ilGenerator = ilGenerator;
     _forbidenInstructions = forbidenInstructions;
 }
Пример #16
0
 public ILMethodImpl(MethodBuilder method, IILGenForbidenInstructions forbidenInstructions)
 {
     _method = method;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength       = 64;
 }
Пример #17
0
 public ILGenImpl(ILGenerator ilGenerator, IILGenForbidenInstructions forbidenInstructions)
 {
     _ilGenerator          = ilGenerator;
     _forbidenInstructions = forbidenInstructions;
 }
Пример #18
0
 public ILGenDebugImpl(ILGenerator ilGenerator, IILGenForbidenInstructions forbidenInstructions, SourceCodeWriter sourceCodeWriter)
 {
     _ilGenerator = ilGenerator;
     _forbidenInstructions = forbidenInstructions;
     _sourceCodeWriter = sourceCodeWriter;
 }
Пример #19
0
 public ILConstructorImpl(ConstructorBuilder constructor, IILGenForbidenInstructions forbidenInstructions)
 {
     _constructor          = constructor;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength       = 64;
 }
Пример #20
0
 public ILConstructorImpl(ConstructorBuilder constructor, IILGenForbidenInstructions forbidenInstructions)
 {
     _constructor = constructor;
     _forbidenInstructions = forbidenInstructions;
     _expectedLength = 64;
 }