//----------------------------------------------------------------------------------------------------------------------------------------------------- #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"))); }
//----------------------------------------------------------------------------------------------------------------------------------------------------- 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>()); }