Я хотел бы представить соглашение AutoMapper, которое сопоставит любое строковое свойство с массивом, разделив строковое значение с помощью разделителя char.
public class A {
public string Prop1 { get; set; }
}
public class B {
public MyEnum[] Prop1 { get; set; }
}
public enum MyEnum {
Val1
}
config.CreateMap<A, B>();
var a = new A { Prop1 = "Val1" };
var b = mapper.Map<B>(a);
В настоящее время я настраиваю преобразование типов для каждого типа массива, например:
c.CreateMap<string, MyEnum[]>()
.ConvertUsing(value => value.Split(',', StringSplitOptions.RemoveEmptyEntries)
.Select(v => v.Trim())
.Select(v => Enum.Parse<MyEnum>(v))
.ToArray());
Но я бы хотел сделать его более общим, чтобы он мог конвертировать:
- string => string[]
- string => int[]
- string => AnyEnum[]