示例#1
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        #region Overrides of ImplementationConvention

        protected override void OnImplementBaseClass(ImplementationClassWriter <TypeTemplate.TBase> writer)
        {
            writer.PrimaryConstructor("Target", out m_TargetField);
            writer.AllMethods(where : m => m.DeclaringType != typeof(object)).ImplementPropagate(m_TargetField);
            writer.AllProperties().ImplementPropagate(m_TargetField);
            writer.AllEvents().ImplementPropagate(m_TargetField);
        }
        //-----------------------------------------------------------------------------------------------------------------------------------------------------
        protected override void OnImplementPrimaryInterface(ImplementationClassWriter<TypeTemplate.TInterface> writer)
        {
            _threadLogAppenderField = writer.Field<IThreadLogAppender>("_threadLogAppender");

            writer.Constructor<IThreadLogAppender>((w, appender) => _threadLogAppenderField.Assign(appender));

            writer.AllMethods().Implement(ImplementLogMethod);

            writer.AllProperties().Implement(
                p => p.Get(w => w.Throw<NotSupportedException>("Events are not supported")),
                p => p.Set((w, value) => w.Throw<NotSupportedException>("Events are not supported")));

            writer.AllEvents().Implement(
                e => e.Add((w, args) => w.Throw<NotSupportedException>("Events are not supported")),
                e => e.Remove((w, args) => w.Throw<NotSupportedException>("Events are not supported")));
        }
示例#3
0
        //-----------------------------------------------------------------------------------------------------------------------------------------------------

        protected override void OnImplementAnyInterface(ImplementationClassWriter <TypeTemplate.TInterface> writer)
        {
            writer.AllMethods().ImplementPropagate(m_TargetField.CastTo <TypeTemplate.TInterface>());
            writer.AllProperties().ImplementPropagate(m_TargetField.CastTo <TypeTemplate.TInterface>());
            writer.AllEvents().ImplementPropagate(m_TargetField.CastTo <TypeTemplate.TInterface>());
        }