public AttributeState(IState parentState, IResultAttributeBuilder attributeBuilder, IActiveState activeState, Creator <IResultAttributeBuilder> createAttributeBuilder, Creator <IAttributeState, IState, IResultAttributeBuilder> createChildAttributeState) : base(parentState, attributeBuilder, activeState, createAttributeBuilder, createChildAttributeState) { _attributeBuilder = attributeBuilder; }
public void Parse <TReader>(IAttributeParser <TReader> parser, TReader reader) where TReader : IReader { IResultAttributeBuilder attributeBuilder = _createAttributeBuilder(); IAttributeState attributeState = _createAttributeState(this, attributeBuilder); IState previousState = _activeState.ChangeState(attributeState); try { parser.Parse(reader, attributeState); } finally { _activeState.ChangeState(previousState); } // TODO: 'Name' must be set on 'attributeBuilder' !! if (!attributeState.Valid) { attributeBuilder.Invalidate(); } _resultBuilder.AddAttribute(attributeBuilder.Build()); }