// 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.Diagnostics; using System.Reflection; namespace CsvHelper.Configuration { /// /// The configuration data for the reference map. /// [DebuggerDisplay( "Prefix = {Prefix}, Parameter = {Parameter}" )] public class ParameterReferenceMapData { private string prefix; /// /// Gets or sets the header prefix to use. /// public virtual string Prefix { get { return prefix; } set { prefix = value; foreach( var memberMap in Mapping.MemberMaps ) { memberMap.Data.Names.Prefix = value; } if (Inherit) { foreach (var memberRef in Mapping.ReferenceMaps) { memberRef.Data.Prefix = memberRef.Data.Prefix == null ? value : string.Concat(value, memberRef.Data.Prefix); } } } } /// /// Gets or sets a value indicating if a prefix should inherit its parent. /// true to inherit, otherwise false. /// public virtual bool Inherit { get; set; } /// /// Gets the that the data /// is associated with. /// public virtual ParameterInfo Parameter { get; private set; } /// /// Gets the mapping this is a reference for. /// public ClassMap Mapping { get; private set; } /// /// Initializes a new instance of the class. /// /// The parameter. /// The mapping this is a reference for. public ParameterReferenceMapData( ParameterInfo parameter, ClassMap mapping ) { Parameter = parameter; Mapping = mapping; } } }