Ejemplo n.º 1
0
            //-------------------------------------------------------------------------------------------------------------------------------------------------

            #region IAspectImplementor Members

            public void ImplementDecoration <TBase>(IHappilClassBody <TBase> classDefinition)
            {
                classDefinition.AsBase <TypeTemplate.TPrimary>().AllMethods().Decorate(
                    attributes: null,
                    body: m => {
                    Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-BEFORE:" + m.MethodInfo.Name));

                    m.Try(() => {
                        var returnValueExpression = m.Proceed();

                        if (!object.ReferenceEquals(returnValueExpression, null))
                        {
                            var returnValue = m.Local <TypeTemplate.TReturn>(initialValue: returnValueExpression);
                            Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-RETURN-VALUE:" + m.MethodInfo.Name + "=") + returnValue.Func <string>(x => x.ToString));
                            Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-SUCCESS:" + m.MethodInfo.Name));
                            m.Return(returnValue);
                        }
                        else
                        {
                            Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-RETURN-VOID:" + m.MethodInfo.Name));
                            Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-SUCCESS:" + m.MethodInfo.Name));
                        }
                    })
                    .Catch <Exception>(e => {
                        Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-ERROR:" + m.MethodInfo.Name + "=") + e.Prop(x => x.Message));
                        m.Throw();
                    })
                    .Finally(() => {
                        Static.Prop(() => ActionLog).Add(m.Const(m_LogPrefix + "-ON-AFTER:" + m.MethodInfo.Name));
                    });
                }
                    );
            }
Ejemplo n.º 2
0
        public void SetUp()
        {
            var currentTestName = TestContext.CurrentContext.Test.Name;

            m_ClassBody = m_Module.DeriveClassFrom <AncestorRepository.BaseOne>("Fluent.StatementTests.TestCase" + currentTestName);
            m_Class     = ((IHappilClassDefinitionInternals)m_ClassBody).HappilClass;
        }
Ejemplo n.º 3
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);
            }
        }
Ejemplo n.º 4
0
            //-------------------------------------------------------------------------------------------------------------------------------------------------

            public TupleClassBuilder(HappilTypeKey key, IHappilClassBody <object> classBody)
            {
                m_Key             = key;
                m_ClassBody       = classBody;
                m_TupleProperties = TypeMembers.Of(key.PrimaryInterface).ImplementableProperties.ToDictionary(p => p.Name, StringComparer.OrdinalIgnoreCase);
            }
Ejemplo n.º 5
0
 public void SetUp()
 {
     m_ClassBody = m_Module.DeriveClassFrom <AncestorRepository.BaseOne>("_" + Guid.NewGuid().ToString("X"));
     m_Class     = ((IHappilClassDefinitionInternals)m_ClassBody).HappilClass;
 }
Ejemplo n.º 6
0
 public void ImplementDecoration <TBase>(IHappilClassBody <TBase> classDefinition)
 {
     classDefinition.AllMethods().ForEach(info => InternalOnMethod(classDefinition, info));
 }