DTO маппер с использованием методов расширения C # - PullRequest
1 голос
/ 02 марта 2011

Является ли хорошей идеей определить члены преобразователя DTO (который в большинстве случаев является статическим классом) как методы расширения?

Тогда вместо записи:

Affiliate bo = Mapper.FromDataTransferObject(dto);

Мы можем написать:

Affiliate bo = dto.FromDataTransferObject();

FromDataTransferObject - это метод расширения, определенный ниже:

public static Affiliate FromDataTransferObject(this AffiliateDto dto) {

if (dto == null) {
    return null;
}

var bo = new Affiliate() {
    Id           = dto.Id,
    AccountAlias = dto.AccountAlias,
    Balance      = dto.Balance
    // ...
};

return bo; 

}

Ответы [ 2 ]

3 голосов
/ 02 марта 2011

Если оставить в стороне проблемы с именами, в этом нет ничего принципиально неправильного, и это позволяет получить хороший SOC с точки зрения того, где находится код, и в то же время предоставлять хороший API.

Тем не менее, вы должны рассмотреть вопрос о переименовании своей функции.Как правило, функции называются с точки зрения target (в данном случае, вашего DTO), а не с точки зрения результата .В вашем случае я бы назвал его ToAffiliate или ToBusinessObject (если вы хотите, чтобы у вашего DTO было одинаковое имя) вместо FromDataTransferObject.

1 голос
/ 02 марта 2011

Я не вижу проблем с ним, он помогает удобству использования и удобочитаемости, и с поставленной задачей у него также нет никаких побочных эффектов. Уже сам использовал.

...