我正在尝试使用 AutoMapper 从 DTO 映射到我的域。
我的 DTO 可能如下所示:
public class MyDTO
{
public string Name { get; set; }
public bool OtherProperty { get; set; }
public ChildDTO[] Children { get; set;}
}
public class ChildDTO
{
public string OtherName { get; set; }
}
我的域对象是这样的:
public class MyDomain
{
public string Name { get; set; }
public bool OtherProperty { get; set; }
public ISet<ChildDomain> Children { get; set; }
}
public class ChildDomain
{
public string OtherName { get; set; }
}
我将如何设置 AutoMapper 以便能够从这些 Array 映射到 Set。似乎 AutoMapper 正在获取数组并将它们转换为 IList,然后在转换为 ISet 时失败。
这是例外
Unable to cast object of type 'System.Collections.Generic.List`1[DataTranser.ChildDTO]' to type 'Iesi.Collections.Generic.ISet`1[Domain.ChildDomain]'.
我希望找到一种简单的通用方法来执行此操作,以便我可以最小化从 DTO 映射到域所需的基础设施。任何帮助是极大的赞赏。
更新:
那么我将如何建模 MyDomain -> ChildDomain 而不会以贫血的域模型结束?我知道如果没有 MyDomain 或 ChildDomain 中的业务逻辑,域模型目前是贫乏的,但我们的目标是在我们前进的过程中添加业务逻辑。我只是想确保我的 View Model 可以翻译成领域模型并持久化。
从视图和域之间的简单映射到后来添加业务规则,您对这个场景有什么建议?
再次感谢你的帮助。