// 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.Reflection;
namespace CsvHelper.Configuration
{
///
/// The configuration data for the reference map.
///
public class MemberReferenceMapData
{
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 MemberInfo Member { 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 member.
/// The mapping this is a reference for.
public MemberReferenceMapData(MemberInfo member, ClassMap mapping)
{
Member = member;
Mapping = mapping;
}
}
}