Вот что я пытаюсь сделать:
class Source
{
int MyProperty1 { get; set;}
....
string[] MyStrings { get; set;}
}
class Destination
{
int MyProperty1 { get; set;}
...
IDictionary<MyEnum, string> MyStrings {get;set;}
}
Вот отображение:
Mapper.CreateMap<Source, Destination>();
Mapper.CreateMap<string[], IDictionary<MyEnum, string().
ConvertUsing<CustomArraytoDict>();
И реализация ITypeConverter:
public class CustomArraytoDict : ITypeConverter<string[], IDictionary<MyEnum, string>>
{
public IDictionary<MyEnum, string> Convert(ResolutionContext context)
{
var periodNames = new Dictionary<MyEnum, string>();
//Create new Key Value pairs from
//context.SourceValue and add them to periodNames.
return periodNames;
}
}
Насколько я понимаю, "ConvertUsing ()" должен гарантировать, что во время отображения AutoMapper будет использовать ссылку на словарь MyStrings, как это предусмотрено CustomArraytoDict. Однако я не вижу, что происходит. Кажется, AutoMapper правильно вызывает CustomArraytoDict во время сопоставления объекта Source с объектом Destination, но ссылка MyStrings в объекте Destination остается той, которая была создана и инициализирована конструктором Destination. Ссылка, возвращаемая CustomArraytoDict, не используется.
Что я мог делать не так?