以下是我要做的事情:
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应该使用CustomArraytoDict提供的MyStrings字典的引用。但是,我没有看到这种情况发生。在将Source对象映射到Destination对象期间,AutoMapper似乎确实正确调用了CustomArraytoDict,但Destination对象中的MyStrings引用仍然是Destination构造函数创建和初始化的引用。不使用CustomArraytoDict返回的引用。
我可能做错了什么?