public override void Generate(GeneratorTypeContext context)
        {
            GenerateInit(context);
            var  classType         = context.ClassType;
            var  typeBuilder       = context.TypeBuilder;
            bool hasClassIntercept = classType.HasInterceptAttribute();

            foreach (var ctor in classType.GetConstructors(
                         BindingFlags.CreateInstance |
                         BindingFlags.Instance |
                         BindingFlags.Public |
                         BindingFlags.NonPublic
                         ).Where(
                         x =>
                         x.IsPublic ||
                         x.IsFamily ||
                         !(x.IsAssembly || x.IsFamilyAndAssembly || x.IsFamilyOrAssembly)
                         ))
            {
                var baseParameterInfos = ctor.GetParameters();
                var parameters         = baseParameterInfos
                                         .Select(x => x.ParameterType)
                                         .ToArray();

                // 定义构造函数
                ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(
                    MethodAttributes.Public,
                    CallingConventions.HasThis,
                    parameters
                    );

                bool isIntercept = true;
                if (ctor.IsDefined(typeof(NonInterceptAttribute)))
                {
                    isIntercept = false;
                }
                if (!ctor.HasDefineInterceptAttribute() && !hasClassIntercept)
                {
                    isIntercept = false;
                }

                constructorBuilder.SetMethodParameters(baseParameterInfos);
                ILGenerator ctorGenerator = constructorBuilder.GetILGenerator();
                GeneratorConstructor(
                    constructorBuilder,
                    ctor,
                    ctorGenerator,
                    context,
                    baseParameterInfos,
                    isIntercept
                    );
            }

            if (context.InterfaceType != null &&
                context.ClassType.IsValueType)
            {
                ConstructorBuilder constructorBuilder = typeBuilder.DefineConstructor(
                    MethodAttributes.Public,
                    CallingConventions.HasThis,
                    null
                    );

                ILGenerator ctorGenerator = constructorBuilder.GetILGenerator();
                GeneratorConstructor(
                    constructorBuilder,
                    null,
                    ctorGenerator,
                    context,
                    null,
                    false
                    );
            }
        }