我有很多属性(成员)的域对象,我在我的API中使用。在某些事务中,将域对象发送到客户机比发送具有相同成员的全新响应类更有意义
现在我的问题是,是否有一种方法,我隐藏类的一些属性,只发送一些属性(成员)到客户端(并在不同的调用发送一组不同的属性和隐藏休息)?
您可以创建新的响应DTO(数据传输对象)类,其中只包含您想要发送回的属性。然后创建工厂方法,将域类的对象转换为响应DTO。
这将满足你的目的。以后如果你想在你的DTO中添加新的属性,这些属性实际上存在于其他域类中,你可以很容易地添加它们。
只是为了以防你想要使用它。您也可以有请求DTO,客户机的数据不一定映射到您的域类。同样,您可以创建一个工厂方法,将您的请求DTO转换为域类/类对象。
正如已经回答的那样,DTO更适合于此。作为一种替代方案,您可以将不需要的属性从客户机"隐藏"到更具体的公共接口后面。您的域对象可以简单地实现它们。
的例子:
class Document : IEntity, IVersionable, IDocumentContentDescription
{
public string Name { get; set; }
public string Description { get; set; }
public string MimeType { get; set; }
public long Length { get; set; }
public int Version { get; set; }
}
public interface IDocumentContentDescription
{
string MimeType { get; }
long Length { get; }
}