https://blog.naver.com/raveneer/221820790399



Automapper! ์ƒ๋‹นํžˆ ๊ฐ•๋ ฅํ•œ ๋งคํ•‘ ์†”๋ฃจ์…˜์ธ๋ฐ. ์จ๋ณด๋‹ˆ ์˜ ์•„๋‹ˆ๋‹ค ์‹ถ์–ด์„œ ๋Œ€์•ˆ์„ ์ฐพ์•„๋ณด์•˜๋‹ค.

https://automapper.org/


์ž ๊น. ๋งคํ•‘์ด๋ž€?


- ๋ฐ์ดํ„ฐ ์ €์žฅ์ด๋‚˜ ํ†ต์‹ ๋“ฑ์„ ํ•  ๋•Œ ์‹œ๋ฆฌ์–ผ๋ผ์ด์ง•์ด ์ž˜ ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ์“ธ ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ์ด๋“ค์„ DTO ๋ผ๊ณ  ํ•˜๋Š”๋ฐ (DataTransferObject),ย  ์ด DTO๋ฅผ ์ฃผ๊ฑฐ๋‚˜ ๋ฐ›์„ ๋•Œ, ํด๋ž˜์Šค์˜ ๊ฐ’์„ DTO์— ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค. ์ด๋ฅผ Mapping ์ด๋ผ ํ•จ.



Automapper ๊ฐ€ ์™œ ์•ˆํ‹ฐํŒจํ„ด์ธ๊ฐ€?


Mapping ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ˆ˜ํ–‰๋œ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค!


class A {

public string Name;

}


class B{

public string name;

}


์œ„ ๋‘ ํด๋ž˜์Šค์˜ ๋งคํ•‘์„ ์‹œ๋„ํ•˜๋ฉด ์˜ˆ์™ธ์—†์ด ์ˆ˜ํ–‰๋œ๋‹ค.


๊ทธ๋Ÿฌ๋‚˜ Name ๊ณผ name ์€ ๊ธ€์ž๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ, ์‹ค์ œ๋กœ๋Š” ๋งคํ•‘๋˜์ง€ ์•Š๋Š”๋‹ค!!!


์™œ๋ƒ๋ฉด Automapper๋Š” Reflection์„ ์ด์šฉํ•ด์„œ ๊ฐ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์œผ๋กœ ๋งคํ•‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Name != name ์ธ ๊ฒƒ.


๋˜ํ•œ IDE ์ƒ์—์„œ ๋งคํ•‘์ด ์ผ์–ด๋‚˜๋Š” ๊ฑธ ์ถ”์ ํ•  ์ˆ˜๋„ ์—†๋‹ค.ย 


๋”ฐ๋ผ์„œ Automapper๋ฅผ ์“ฐ๋ฉด '๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๊ฒฝ์šฐ' ์—๋งŒ ์ •์ƒ์ž‘๋™ํ•˜๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธธ ์šฐ๋ ค๊ฐ€ ์–ธ์ œ๋‚˜ ์žˆ๋‹ค.


์ด๋Ÿฐ ๊ฑธ ๋ณผ๋•Œ Automappr๋Š” ์•ˆํ‹ฐํŒจํ„ด์ด๋ผ ์ƒ๊ฐํ•œ๋‹ค.




๊ทธ๋ ‡๋‹ค๋ฉด ๋Œ€์•ˆ์€?


MappingGenerator ๋ผ๋Š” ๋ˆ„๊ฒŸ์ด ์žˆ๋‹ค.


์ด๊ฒƒ์€ vs ์˜ Roslyn ์„ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด๋‚ด๋Š” ๊ฒƒ์ธ๋ฐ (์Šค๋‹ˆํŽซ์ฒ˜๋Ÿผ)


์จ๋ณด๋‹ˆ ๊ฐ•๋ ฅํ•˜๊ณ  ํŽธํ–ˆ๋‹ค.


https://github.com/cezarypiatek/MappingGenerator


์–ด๋””๊นŒ์ง€๋‚˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ž‘์—…์œผ๋กœ ์ณ๋„ฃ๋Š” ๊ฒƒ์„ ์ž๋™ํ™” ํ•ด์ฃผ๋Š” ๊ฒƒ ๋ฟ์ด๋ฏ€๋กœ, ์˜์กด์„ฑ๋„ ์—†๊ณ , ๋””๋ฒ„๊น…๋„ ์‰ฌ์›Œ์ง„๋‹ค.

๋˜ํ•œ ๋งคํ•‘์„ ํ• ๋•Œ ํŠน์ • ํ•จ์ˆ˜๋ช…์„ ์“ฐ๋Š” ๊ทœ์น™์•„๋‹Œ ๊ทœ์น™์ด ์ƒ๊ธฐ๋Š” ์…ˆ์ด๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ์—๋„ ๋„์›€์ด ๋œ๋‹ค.

์ด์ชฝ์ด ํ›จ์”ฌ ๋งž๋Š” ์ ‘๊ทผ๋ฒ•์ธ ๊ฒƒ ๊ฐ™๋‹ค.


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

์ฃผ์˜!
MappingGenerator๋Š”ย  get set์˜ ๋ฒ”์œ„๊ฐ€ ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ์—๋งŒ ์ ์šฉ๋˜๋ฉฐ, ํ•„๋“œ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
(x) public string Nameย  <-> public string nameย ย 
(x) public string Name {get; private set;}ย  <-> public string nameย ย 
(o) public string Name {get; private set;}ย  <-> public string nameย  {get; private set;}

ํ•„๋“œ๋ณด๋‹ค๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์“ฐ๋Š”๊ฒŒ ๊ถŒ์žฅ๋˜๊ธฐ๋„ ํ•˜๋‹ˆ๊นŒ. ํฌ๊ฒŒ ๋ฌธ์ œ๋˜์ง€๋Š” ์•Š์„ ๊ฒƒ.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
json.net์„ ์“ด๋‹ค๋ฉด, private set; ์„ ์“ฐ๋ฉด ์„ค์ •์„ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ์— ์ฃผ์˜.






viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73ced83fa11d0283109f613b0c2e59fad7a6296a8113082d7df624d5f84422debeb2cb26ba1ac1cb19f8b6b9a226add6702b3cb91e03ab4f229a902


PDD ์ง„ํ–‰์ค‘.


Post Apocalypse Driven Develop