//----------------------------------------------------------------------------------------------------------------------------------------------------- private void ImplementLoadPropertiesMethod(ImplementationClassWriter<TypeTemplate.TInterface> writer, List<PropertyMember> properties) { writer.ImplementBase<ConfigurationSectionBase>().Method<XElement>(x => x.LoadProperties).Implement((m, xml) => { foreach ( var property in properties ) { using ( TT.CreateScope<TT.TProperty>(property.PropertyDeclaration.PropertyType) ) { m.This<ConfigurationSectionBase>().Void<XElement, string, TT.TProperty>( x => (a, b, c) => x.TryReadScalarValue<TT.TProperty>(a, b, ref c), xml, m.Const(property.Name), property.BackingField.AsOperand<TT.TProperty>()); } } }); }
//----------------------------------------------------------------------------------------------------------------------------------------------------- private void ImplementGetXmlNameMethod(ImplementationClassWriter<TypeTemplate.TInterface> writer) { var xmlName = ConfigurationSectionAttribute.From(Context.TypeKey.PrimaryInterface).XmlName; if ( string.IsNullOrEmpty(xmlName) ) { xmlName = Context.TypeKey.PrimaryInterface.Name.TrimPrefix("I").TrimSuffix("Config"); } writer.ImplementBase<ConfigurationSectionBase>().Method<string>(x => x.GetXmlName).Implement(m => m.Return(constantValue: xmlName)); }