我目前正在开发一个主要包含一个Angular SPA和一个可访问后端层的OData WebAPI的大型Web应用程序。
我们处于早期阶段,已经开始实施第一类,包括一个在公共命名空间中的Model.dll
,以便它可以被所有图层访问。
我们现在讨论模型中的那些DTO。有人说使用接口是绝对必要的,所以代码会是这样的:DTOs的接口
namespace MySolution.Common.Model
{
public interface IPerson
{
int Id { get; set; }
string Name { get; set; }
...
}
}
namespace MySolution.Common.Model
{
public class PersonDTO : IPerson
{
public int Id { get; set; }
public string Name { get; set; }
...
}
}
就这样。只是简单的DTO没有更多的智力。
我现在问自己这是不是一个好方法,因为我没有看到在这里使用接口的必要性。
这有什么好处?提到可测试性,但是甚至有必要测试DTos?依赖注入应该也不是重点。
任何启蒙都会非常有帮助。在最后学习新的东西和方法总是很好...
如果你不需要它,没有理由使用接口。这太复杂了,应该是一个简单的对象。 –
如果* DTO *只是一个属性列表,我看到这一点毫无意义。例如,如果您有某种存储库,那么您可以通过接口来代替虚假表示的数据库连接。如果你有'Person GetPerson()',你可以拥有数据库版本和假版本。 – christiandev
对于类型约束和映射,您可能会在DTO('FooDto:IAmADto')上弹出标记接口,但除此之外,它的用途是什么?这里没有抽象,取决于'IPerson'给你的连接级别与'Person'完全相同。 –