private static Type GenerateWrapperType(Type interfaceType, Type underlyingType)
        {
            TypeBuilder typeBuilder = ModuleBuilder.DefineType("{0}_{1}_Wrapper".FormatWith(CultureInfo.InvariantCulture, interfaceType.Name, underlyingType.Name), TypeAttributes.Sealed, typeof(DynamicWrapperBase), new Type[1] {
                interfaceType
            });
            WrapperMethodBuilder wrapperMethodBuilder = new WrapperMethodBuilder(underlyingType, typeBuilder);

            foreach (MethodInfo item in interfaceType.AllMethods())
            {
                wrapperMethodBuilder.Generate(item);
            }
            return(typeBuilder.CreateType());
        }
Exemple #2
0
        private static Type GenerateWrapperType(Type interfaceType, Type underlyingType)
        {
            TypeBuilder proxyBuilder = DynamicWrapper.ModuleBuilder.DefineType(StringUtils.FormatWith("{0}_{1}_Wrapper", (IFormatProvider)CultureInfo.InvariantCulture, (object)interfaceType.Name, (object)underlyingType.Name), TypeAttributes.Sealed, typeof(DynamicWrapperBase), new Type[1]
            {
                interfaceType
            });
            WrapperMethodBuilder wrapperMethodBuilder = new WrapperMethodBuilder(underlyingType, proxyBuilder);

            foreach (MethodInfo newMethod in TypeExtensions.GetAllMethods(interfaceType))
            {
                wrapperMethodBuilder.Generate(newMethod);
            }
            return(proxyBuilder.CreateType());
        }