Пример #1
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        public void ApplyChecks(MethodDecorationBuilder decoration)
        {
            foreach (var check in base.GetChecks <ApiMethodCheckWriter>())
            {
                check.WriteMethodCheck(decoration);
            }
        }
Пример #2
0
        //-------------------------------------------------------------------------------------------------------------------------------------------------

        private void WriteReturnValueCheck(MethodDecorationBuilder decoration)
        {
            decoration.OnReturnValue((w, retVal) => {
                using (TypeTemplate.CreateScope <TypeTemplate.TArgument>(m_ParameterInfo.ParameterType))
                {
                    WriteArgumentOrCollectionItemCheck(w, retVal.CastTo <TypeTemplate.TArgument>(), isOutput: true);
                }
            });
        }
Пример #3
0
        //-------------------------------------------------------------------------------------------------------------------------------------------------

        private void WriteArgumentInputCheck(MethodDecorationBuilder decoration)
        {
            decoration.OnBefore(w => {
                using (TypeTemplate.CreateScope <TypeTemplate.TArgument>(m_ParameterInfo.ParameterType))
                {
                    var argument = w.Argument <TypeTemplate.TArgument>(m_ParameterInfo.Position + 1);
                    WriteArgumentOrCollectionItemCheck(w, argument, isOutput: false);
                }
            });
        }
Пример #4
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        private void InternalOnMethod <TBase>(IHappilClassBody <TBase> classDefinition, MethodInfo info)
        {
            var decoration = new MethodDecorationBuilder();

            OnMethod(info, decoration);

            if (!decoration.IsEmpty)
            {
                classDefinition.Method(info).Decorate(
                    attributes: decoration.GetAttributes,
                    body: decoration.ApplyBody);
            }
        }
Пример #5
0
        //-------------------------------------------------------------------------------------------------------------------------------------------------

        public override void WriteMethodCheck(MethodDecorationBuilder decoration)
        {
            if (IsReturnParameter)
            {
                WriteReturnValueCheck(decoration);
            }
            else
            {
                if (!m_ParameterInfo.IsOut)
                {
                    WriteArgumentInputCheck(decoration);
                }

                if (m_ParameterInfo.IsOut || m_ParameterInfo.ParameterType.IsByRef)
                {
                    WriteArgumentOutputCheck(decoration);
                }
            }
        }
Пример #6
0
 public override void OnMethod(MethodInfo info, MethodDecorationBuilder decoration)
 {
     decoration
     .OnBefore(m =>
               Static.Prop(() => ActionLog).Add(m.Const("ON-BEFORE:" + info.Name))
               )
     .OnReturnValue((m, retVal) =>
                    Static.Prop(() => ActionLog).Add(m.Const("ON-RETURN-VALUE:" + info.Name + "=") + retVal.Func <string>(x => x.ToString))
                    )
     .OnReturnVoid(m =>
                   Static.Prop(() => ActionLog).Add(m.Const("ON-RETURN-VOID:" + info.Name))
                   )
     .OnSuccess(m =>
                Static.Prop(() => ActionLog).Add(m.Const("ON-SUCCESS:" + info.Name))
                )
     .OnException <ExceptionRepository.TestExceptionOne>((m, e) => {
         Static.Prop(() => ActionLog).Add(m.Const("ON-EXCEPTION-ONE:" + m.MethodInfo.Name + "=") + e.Prop(x => x.Message));
         if (!m.MethodInfo.IsVoid())
         {
             m.Return(m.Default <TypeTemplate.TReturn>());
         }
     })
     .OnException <Exception>((m, e) => {
         Static.Prop(() => ActionLog).Add(
             m.Const("ON-EXCEPTION-UNKNOWN:" + m.MethodInfo.Name + "=") +
             e.Func <Type>(x => x.GetType).Prop <string>(x => x.Name) +
             m.Const(":") +
             e.Prop(x => x.Message));
         m.Throw();
     })
     .OnFailure(m =>
                Static.Prop(() => ActionLog).Add(m.Const("ON-FAILURE:" + info.Name))
                )
     .OnAfter(m =>
              Static.Prop(() => ActionLog).Add(m.Const("ON-AFTER:" + info.Name))
              );
 }
Пример #7
0
 public abstract void WriteMethodCheck(MethodDecorationBuilder decoration);
Пример #8
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        public virtual void OnMethod(MethodInfo info, MethodDecorationBuilder decoration)
        {
        }