public FieldAcceptance AcceptField(int tag, ArraySegment <byte> value) { if (Count == 0) { T elem = new T(); FieldAcceptance res = elem.AcceptField(tag, value); Assert.True(res != FieldAcceptance.AlreadySet); if (res == FieldAcceptance.Accepted) { Add(elem); } return(res); } else { FieldAcceptance res = this[Count - 1].AcceptField(tag, value); if (res == FieldAcceptance.AlreadySet) { Add(new T()); res = this[Count - 1].AcceptField(tag, value); Assert.True(res == FieldAcceptance.Accepted, "res = {0}", res); } return(res); } }
public FieldAcceptance AcceptField(int tag, ArraySegment <byte> value) { foreach (IFields fields in (IEnumerable <IFields>) this) { FieldAcceptance res = fields.AcceptField(tag, value); if (res != FieldAcceptance.TagMismatch) { return(res); } } return(FieldAcceptance.TagMismatch); }