agoda-com / agoda-com/standards-c-sharp

Add From method pattern recommendation for mapping

Đang mở
#9 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
22
Fork
4
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

This technique is mensioned in a few of the articles but never officially documented.

Not sure if this is standards or style though. Maybe it belongs in a different section all together.

What we discussed was we looking at mapping as a concept, having mapping classes or services to map class A to B doesn't lend itself to be very discoverable, and we see times when mapper classes are written multiple times because of this.

Also mappers in general should be pure, so base on our other recommendation about using static for pure methods, we started using a static method called From, in target classes for mapping.

For example

```csharp
public class A
{
}
public class B
{
public static From(A a)
{
// mapping logic here
}
}

```

What this would look like getting used is something like this

```csharp
B.From(new A())
```

- Having the mapping logic in the model itself allows for good discoverability, when you look at the model you see what other model it depends on
- if the methods is pure is should be static
- the code reads like a sentence to describe what's being done "B from A", making it fluent
- Can be used with multiple classes in the From method

Where it is not good is when your mapping is not pure, you don't want to be passing services into the from method.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.