我正在使用AutoMapper设置的项目。由于大多数对我来说都是陌生的,因此我对原因保持开放的态度。
假设我有两节课:
class Foo
{
public string name { get; set; }
public int rank { get; set; }
public bool isDelected { get; set; }
}
class FooView
{
public string name { get; set; }
public int rank { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而不是使用ORM,为什么我不只是使用将FooView作为参数的构造函数。
class Foo
{
public Foo(FooView source)
{
this.name = source.name;
this.rank = source.rank;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只要我有FooView并且需要Foo,我就说
var myFoo = new Foo(FooView);
Run Code Online (Sandbox Code Playgroud)
它为我提供了我在一个位置所需的所有逻辑,并且我可以在任何地方使用它。如果我需要更新代码,则将其与Model定义放在同一位置。那我想念什么呢?
如果您的所有模型都在同一个装配体中或者直接依赖于其他项目,这可能没问题。如果您的模型很好地对齐,则 AutoMapper 非常有用,但如果您需要对映射进行更多控制,我倾向于将它们放入专用帮助程序或 MVC 控制器中的静态映射方法中。
这有助于将我的映射逻辑与模型分开
private static Foo MapToFoo(FooView vm)
{
var foo = new Foo();
foo.Name = vm.Name;
foo.Rank = vm.Rank;
...
return foo;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
846 次 |
| 最近记录: |