// Copyright 2009-2022 Josh Close // This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0. // See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0. // https://github.com/JoshClose/CsvHelper using System; using System.Diagnostics; using System.Reflection; namespace CsvHelper.Configuration { /// /// Mapping info for a reference member mapping to a class. /// [DebuggerDisplay("Member = {Data.Member}, Prefix = {Data.Prefix}")] public class MemberReferenceMap { private readonly MemberReferenceMapData data; /// /// Gets the member reference map data. /// public MemberReferenceMapData Data => data; /// /// Initializes a new instance of the class. /// /// The member. /// The to use for the reference map. public MemberReferenceMap(MemberInfo member, ClassMap mapping) { if (mapping == null) { throw new ArgumentNullException(nameof(mapping)); } data = new MemberReferenceMapData(member, mapping); } /// /// Appends a prefix to the header of each field of the reference member. /// /// The prefix to be prepended to headers of each reference member. /// Inherit parent prefixes. /// The current public MemberReferenceMap Prefix(string? prefix = null, bool inherit = false) { if (string.IsNullOrEmpty(prefix)) { prefix = data.Member.Name + "."; } data.Inherit = inherit; data.Prefix = prefix; return this; } /// /// Get the largest index for the /// members and references. /// /// The max index. internal int GetMaxIndex() { return data.Mapping.GetMaxIndex(); } } }