gpt4 book ai didi

c# - 我应该在哪里放置自动映射器代码?

转载 作者:太空狗 更新时间:2023-10-30 00:41:17 25 4
gpt4 key购买 nike

我在 Asp.net mvc 应用程序中使用 Automapper。我对 automapper 的使用有疑问

从大量示例代码中,我看到人们使用映射器 Mapper.Map<Target>(source)直接在行动中,我不确定这是否是好的做法,在我看来,我想包装 Mapper代理对象中的代码而不是让它与 controller 对话直接

      public BankflowData CreateBankflowAdjustments(BankflowData addedBankFlow)
{
var bankflow = Mapper.Map<Bankflow>(addedBankFlow);
var newBankflow = Underlying.CreateBankFlowAdjustments(bankflow);
return Mapper.Map<BankflowData>(newBankflow);
}

在这个例子中, Controller 对类Bankflow一无所知。 , 它只知道 dto BankflowData .

我想知道这对使用 AutoMapper 的应用程序来说是否是一个好的做法?

最佳答案

对于之前的问题,我回答了ASP.NET MVC with service layer and repository layer, where should the interfaces be defined?

在我的回答中,我解释道:

[...] I have a typical structure like this:

  • MyProject.Core
  • MyProject.Domain
  • MyProject.DependencyInjection
  • MyProject.Infrastructure
  • MyProject.Web
  • MyProject.Tests

The Infrastructure layer contains information about logging, emailing and data access. It will contain my ORM of choice. It's not business-logic stuff and it's not UI stuff. It's the railroad of my solution to get things done. It's on the outer layer but it only references the Core.

在我的例子中,基础设施层还包含 Automapper。核心定义了一个简单的接口(interface)(比方说 IAutoMapper),基础设施中存在的一个简单对象实现了它,该对象可以通过依赖注入(inject)传递到 UI 层。

但是 Jimmy Bogard(Automapper 的创建者)在AutoMapper 3.0, Portable Class Libraries and PlatformNotSupportedException 中说

[...] if you whine about UI projects shouldn’t reference this library directly because of some silly faux architect-y reason (even referencing a certain smelly round vegetable), I will drive to your house and slap you silly. Get off your high horse and start being productive.

据我了解,他的意思是可以从 UI 层引用 Automapper。当他说 “某种发臭的圆形蔬菜” 时,他当然指的是 Onion Architecture吉米不太喜欢。

关于c# - 我应该在哪里放置自动映射器代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21620048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com