我正在使用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; }
}
而不是使用ORM,为什么我不只是使用将FooView作为参数的构造函数。
class Foo
{
public Foo(FooView source)
{
this.name = source.name;
this.rank = source.rank;
}
}
在这种情况下,每当我有FooView并且需要Foo时,我只是说
var myFoo = new Foo(FooView);
它为我提供了我在一个位置所需的所有逻辑,并且我可以在任何地方使用它。如果我需要更新代码,则将其与Model定义放在同一位置。那我想念什么呢?
最佳答案
如果所有模型都在同一装配中或直接依赖于其他项目,则可能会很好。如果您的模型可以很好地对齐,则AutoMapper非常有用,但是如果您需要对映射进行更多控制,我倾向于将它们放在静态映射方法中的专用帮助器中或MVC Controller 中。
这有助于使我的映射逻辑与模型分离
private static Foo MapToFoo(FooView vm)
{
var foo = new Foo();
foo.Name = vm.Name;
foo.Rank = vm.Rank;
...
return foo;
}
关于c# - 映射器vs构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38210181/