/// <summary> /// Appends member and context to builder. /// </summary> /// <param name="expression">Expression pointing to field or property to include.</param> /// <param name="context">Context associated with selected member.</param> /// <typeparam name="TMember">Type of selected field or property.</typeparam> /// <returns>Updated builder instance.</returns> protected TBuilder AppendExplicit <TMember>(Expression <Func <TTarget, TMember> > expression, TContext context) { var ctx = new MemberContext <TContext>(SelectedMember.Create(expression), context, ExplicitMember); _memberContexts.Remove(ctx); _memberContexts.Add(ctx); return(this as TBuilder); }
/// <summary> /// Includes referenced field or property into members available to object being built. /// </summary> /// <param name="fieldOrPropertyGetter">Expression pointing to field or property to include.</param> /// <typeparam name="TMember">Type of selected field or property.</typeparam> /// <returns>Updated builder instance.</returns> /// <exception cref="ArgumentException"> /// <paramref name="fieldOrPropertyGetter"/> is not field or property accessor expression. /// </exception> public TBuilder Append <TMember>(Expression <Func <TTarget, TMember> > fieldOrPropertyGetter) { _memberContexts.Add(CreateImplicitMemberContext(SelectedMember.Create(fieldOrPropertyGetter))); return(this as TBuilder); }