Hi,
I'm trying to find way how to improve this code. I would like to remove "if" statement from CreateAttributes method. The main idea of this method to add attribute to list if this attribute satisfies some conditions
internal class FildMap
{
public string ExactTargetFild { get; set; }
public string DbFild { get; set; }
public Type Type { get; set; }
}
internal static class FildMapProcessor
{
private static readonly List<FildMap> Map = new List<FildMap>();
static FildMapProcessor()
{
if(Map.Count == 0)
{
Map.Add(new FildMap {ExactTargetFild = "Address 1", DbFild = "Address1", Type = typeof (string)});
Map.Add(new FildMap { ExactTargetFild = "Date of birth", DbFild = "DateOfBirth", Type = typeof(DateTime) });
Map.Add(new FildMap { ExactTargetFild = "Wine Beer", DbFild = "pref_WineBeerSpirits", Type = typeof(bool) });
.........
}
}
public static Attribute[] CreateAttributes(this DataRow row)
{
var attributes = new List<Attribute>();
foreach (var item in Map)
{
if (item.Type == typeof(string))
{
var value = row.Get<string>(item.DbFild);
if (value != null)
attributes.Add(new Attribute{Name = item.ExactTargetFild, Value = value});
}
if (item.Type == typeof(DateTime))
{
var value = row.Get<DateTime>(item.DbFild);
if (value != DateTime.MinValue)
attributes.Add(new Attribute { Name = item.ExactTargetFild, Value = value.ToString("dd/MM/yyyy") });
}
if (item.Type == typeof(bool))
{
if (row.Contains(item.DbFild))
{
var value = row.Get<bool>(item.DbFild);
attributes.Add(new Attribute { Name = item.ExactTargetFild, Value = value.ToString() });
}
}
}
return attributes.ToArray();
}
}
Thanks,