-
Notifications
You must be signed in to change notification settings - Fork 25
Kopyalama
Umut Ozel edited this page May 8, 2017
·
5 revisions
- Map metodunu iki tip parametresi ile çağırabiliriz. MapConfiguration'ın varsayılan preserveReferences ayarını da burada ezebiliriz.
public TOut Map<TIn, TOut>(TIn inObj, bool? preserveReferences = null)
// bu kopyalama için referansları koruyoruz, MapConfiguration için bu ayar kapalı (false) olsa bile
var customerDto = config.Map<Customer, CustomerDTO>(customer, true);
- Varolan bir hedef nesneye kopyalama yapabiliriz.
public TOut MapTo<TIn, TOut>(TIn inObj, TOut outObj, bool? preserveReferences = null)
var customerDto = Session.Get<CustomerDto>(customer.Id);
customerDto = config.Map<Customer, CustomerDTO>(customer, customerDto);
- BatMap'in tip bilgisini inObj'den almasını sağlayabiliriz.
public TOut Map<TOut>(object inObj, bool? preserveReferences = null)
var customerDto = config.Map<CustomerDTO>(customer);
- BatMap'in hedef tipi otomatik bulmasını sağlayabiliriz. Bu metod inObj'nin tipi için en az bir kayıt yapılmış olmasını gerektirir.
public object Map(object inObj, bool? preserveReferences = null)
// BatMap kayıtlardan inObj'nin tipi için yapılmış ilkini kullanır
var customerDto = config.Map(customer);
- BatMap'e hedef tipi açık olarak söyleyebiliriz. Bu metod tip parametreli metodları kullanamadığımız zamanlar için kullanışlıdır.
public object Map(object inObj, Type outType, bool? preserveReferences = null)
var customerDto = (CustomerDTO) config.Map(customer, typeof(CustomerDTO));
- Tüm IEnumerable'ı kopyalayabiliriz. Bu metod her bir nesne için tek tek kopyalama işlemi yapmaktan daha hızlı çalışacaktır, çünkü BatMap arka planda MapDefinition bilgisini sadece bir kez isteyecektir ⚡️
public IEnumerable<TOut> Map<TIn, TOut>(IEnumerable<TIn> source, bool? preserveReferences = null)
var customerDtos = config.Map<Customer, CustomerDTO>(customers);
- IEnumerable gibi bu kopyalama işlemini sözlükler (Dictionary) için de yapabiliriz.
public Dictionary<TOutKey, TOutValue> Map<TInKey, TInValue, TOutKey, TOutValue>(
IDictionary<TInKey, TInValue> source, bool? preserveReferences = null)
// Customer nesnesi CustomerDTO nesnesine çevirilecek
var customerDtoDict = config.Map<int, Customer, int, CustomerDTO>(customerDict);
// Bu da çalışır. Anahtar değerler de gerektiğinde kopyalanır
var customerDtoDict = config.Map<Customer, int, CustomerDTO, int>(customerDict);
Mapper statik sınıfı yukarıdaki metodların hepsine sahiptir, sadece tek bir farklılıkla.:
public static IEnumerable<TOut> Map<TIn, TOut>(this IEnumerable<TIn> source, bool? preserveReferences = null)
customers.Map<Customer, CustomerDTO>();
IEnumerable için genişleme metodu (extension method) kullanır 💯
⏩ Yansıtma
Developed with ❤️ at Doğuş Teknoloji