我有一个源类型,它具有简单的属性和集合类型属性。 我有一个目标类型,它具有完全相同的简单属性和完全相同的集合类型属性。
编辑:我忘了提到集合类型属性不仅名称相同,而且实际上是完全相同的类型,关于集合类型,两种项目类型
为AutoMapper配置一个简单映射后,如:
var destination = Mapper.Map<MyDestinationType>(source);
并映射实例:
Assert.IsTrue(ReferenceEquals(destination.MyCollection, source.MyCollection));
似乎我得到了一份很深的副本。
我不希望有一个深层副本,我希望目标和源集合类型属性只是引用复制:
function RAM_Information()
{
var SystemAttributes = GetObject("winmgmts:");
var RAMSize = 0;
var MemoryPackets = SystemAttributes.ExecQuery("SELECT Capacity FROM Win32_PhysicalMemory");
var enumItems = new Enumerator(MemoryPackets);
for ( ; !enumItems.atEnd(); enumItems.moveNext())
{
RAMSize += aqConvert.StrToFloat(enumItems.item().Capacity);
}
Log.Message("Total physical memory: " + VarToStr(RAMSize*0.000000001) + " GB");
return RAMSize*0.000000001;
}
function ProcessorInformation()
{
return Sys.CPU;
}
答案 0 :(得分:0)
很奇怪,AutoMapper文档没有提及此行为。 AutoMapper尝试将自定义集合深克隆到List<>
中。
interface IMyCollection : IEnumerable<int> // or class
{
}
class From
{
public IMyCollection Collection { get; set; }
}
class To
{
public IMyCollection Collection { get; set; }
}
解决方案:
cfg.CreateMap<IMyCollection, IMyCollection>().ConvertUsing(s => s); // force shallow clone
cfg.CreateMap<From, To>();