{"id":77043,"date":"2024-09-17T22:43:35","date_gmt":"2024-09-17T19:13:35","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/"},"modified":"2024-09-17T22:43:35","modified_gmt":"2024-09-17T19:13:35","slug":"a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/","title":{"rendered":"\u0631\u0648\u0634\u06cc \u0645\u062f\u0631\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0628\u0627 \u0627\u0631\u0632\u0634 \u0628\u0631\u0627\u06cc \u062d\u0644 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647 \u062f\u0631 \u062f\u0627\u062a \u0646\u062a"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n            \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0627\u0633\u062a.\u0627\u06cc\u0646 \u06cc\u06a9 \u0636\u062f \u0627\u0644\u06af\u0648\u06cc \u0631\u0627\u06cc\u062c \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u062f \u0646\u0627\u0645\u0634\u062e\u0635 \u0648 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0633\u062e\u062a\u200c\u062a\u0631 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u0628\u0647 \u0634\u0645\u0627 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627 \u0634\u0648\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Value Objects \u062f\u0631 \u062f\u0627\u062a \u0646\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0633\u06cc\u062f\u06af\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646: antondevtips.com \u0645\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u062f\u0627\u062a \u0646\u062a \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0645.\u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0647\u062a\u0631 \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f.\u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<\/p>\n<p>\u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u0632\u0645\u0627\u0646\u06cc \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f \u06a9\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u0647 (\u0645\u0627\u0646\u0646\u062f int\u060c string \u06cc\u0627 DateTime) \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062f\u0631 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.\u0627\u06cc\u0646 \u0639\u0645\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u062f \u0646\u0627\u0645\u0634\u062e\u0635\u060c \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0648 \u0645\u0634\u06a9\u0644 \u062f\u0631 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u06af\u0633\u062a\u0631\u0634 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0634\u0648\u062f.<\/p>\n<p>\u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<\/p>\n<p>\u0639\u062f\u0645 \u0628\u06cc\u0627\u0646: \u0627\u0646\u0648\u0627\u0639 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f int \u06cc\u0627 string \u0645\u0639\u0646\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0631\u0648\u0634\u0646 \u0646\u0645\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u060c \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u06cc\u06a9 URL \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0641\u0642\u0637 \u0628\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0646\u0648\u0639 \u0622\u0646 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>\u0627\u0641\u0632\u0627\u06cc\u0634 \u062e\u0637\u0631 \u062e\u0637\u0627: \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0645\u0641\u0627\u0647\u06cc\u0645 \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0627\u062f\u0631\u0633\u062a \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0628\u0631\u0627\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u06cc\u0645\u06cc\u0644\u06cc \u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u067e\u0631\u0627\u06a9\u0646\u062f\u0647: \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u0648\u0627\u0639 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u063a\u0644\u0628 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u067e\u0631\u0627\u06a9\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f\u060c \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u062a\u06a9\u0631\u0627\u0631 \u0648 \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0645\u0634\u06a9\u0644 \u062f\u0631 \u062a\u062f\u0648\u06cc\u0646 \u06a9\u062f: \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0634\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0646\u06cc\u0627\u0632\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0646\u062f. \u0627\u06af\u0631 \u062f\u0631 \u0647\u0645\u0647 \u062c\u0627 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0627\u06cc\u062c\u0627\u062f \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0647 \u0631\u0648\u0634\u06cc \u062b\u0627\u0628\u062a \u0648 \u0628\u062f\u0648\u0646 \u0634\u06a9\u0633\u062a \u062f\u0634\u0648\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u062b\u0627\u0644\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 a User \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u062f\u0627\u0631\u062f Email \u062f\u0627\u0631\u0627\u06cc\u06cc\u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f User \u0634\u06cc<\/p>\n<p>\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0628\u0647 \u0686\u0646\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc webapi \u062e\u0648\u062f \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648\u0631\u0648\u062f\u06cc \u062f\u0627\u0631\u06cc\u062f.\u0627\u0645\u0627 \u062d\u0642\u06cc\u0642\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc\u060c \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u0634\u06a9\u0627\u0644 \u062f\u0631 \u06a9\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u0631\u0627 \u062f\u0631 \u0633\u0627\u06cc\u0631 \u0627\u062c\u0632\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0646\u062c\u0627\u062a \u0646\u0645\u06cc\u200c\u062f\u0647\u062f.\u0686\u0646\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0631\u0648\u0634\u06cc \u0645\u062d\u0628\u0648\u0628 \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc Domain Driven \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u062e\u0648\u062f \u06cc\u06a9 \u0645\u062d\u0627\u0641\u0638 \u0627\u06cc\u0645\u0646\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 (\u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0633\u0627\u062f\u0647\u060c \u063a\u06cc\u0631 \u0622\u0645\u0627\u062f\u0647 \u062a\u0648\u0644\u06cc\u062f):<\/p>\n<p>public class User<br \/>\n{<br \/>\n    public string Email { get; set; }<\/p>\n<p>    public User(string email)<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(email) || !email.Contains(&#8220;@&#8221;))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Invalid email address&#8221;, nameof(email));<br \/>\n        }<\/p>\n<p>        Email = email;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0686\u0631\u0627 \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<\/p>\n<p>\u0648\u06cc\u0698\u06af\u06cc Email \u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0646\u0648\u0639 \u0631\u0634\u062a\u0647 \u0627\u06cc \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u062c\u0627\u06cc \u062f\u0647\u062f\u060c \u0646\u0647 \u0641\u0642\u0637 \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631.<br \/>\n\u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u0647 \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u062f\u0631 \u062c\u0627\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u062f\u0627\u0631\u06cc\u062f \u0631\u0627 \u062f\u0634\u0648\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0627\u06af\u0631 \u0628\u062e\u0634 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u06a9\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u062b\u0627\u0644 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>public class User<br \/>\n{<br \/>\n    public string Email { get; }<br \/>\n    public string Username { get; }<\/p>\n<p>    public User(string email, string username)<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(email))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Email is required&#8221;, nameof(email));<br \/>\n        }<\/p>\n<p>        if (string.IsNullOrWhiteSpace(username))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Username is required&#8221;, nameof(username));<br \/>\n        }<\/p>\n<p>        Email = email;<br \/>\n        Username = username;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<p>var user = new User(&#8220;anton@test.com&#8221;, &#8220;anton&#8221;);<br \/>\nvar user = new User(&#8220;anton&#8221;, &#8220;anton@test.com&#8221;);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u06a9\u062f \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f. \u0622\u06cc\u0627 \u0645\u062a\u0648\u062c\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0634\u062f\u06cc\u062f\u061f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 string \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f &#8211; \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.\u0648 \u0627\u06af\u0631 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0627\u0634\u06cc\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0645\u060c \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a \u062c\u062f\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0631\u0627\u0647 \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc\u060c \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0631\u0641\u062a\u0627\u0631 \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0648\u0627\u062d\u062f \u0648 \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u0645\u062d\u0635\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>  \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0686\u06cc\u0633\u062a\u061f<\/p>\n<p>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u062f\u0631 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0648\u06cc\u062a \u0646\u062f\u0627\u0631\u062f \u0627\u0645\u0627 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f.\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 Address \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u0634\u06cc \u0627\u0631\u0632\u0634 \u0628\u0627\u0634\u062f\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 (\u062e\u06cc\u0627\u0628\u0627\u0646\u060c \u0634\u0647\u0631\u060c \u067e\u0633\u062a) \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u06a9\u0644\u06cc\u062f\u06cc \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u062f\u0627\u0645\u0646\u0647 \u0645\u062d\u0648\u0631 (DDD) \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc:<\/p>\n<p>\u062a\u063a\u06cc\u06cc\u0631\u0646\u0627\u067e\u0630\u06cc\u0631\u06cc: \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f\u060c \u06cc\u06a9 \u0634\u06cc \u0627\u0631\u0632\u0634 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06cc\u0633\u062a. \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0645\u0646\u062c\u0631 \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f.<br \/>\n\u0628\u0631\u0627\u0628\u0631\u06cc: \u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u0634\u0627\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0646\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0631\u062c\u0639.<br \/>\n\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc: \u0622\u0646\u0647\u0627 \u0628\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u0628\u0631 \u0631\u0648\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u06a9\u0647 \u062d\u0627\u0644\u062a \u0622\u0646\u0647\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.<\/p>\n<p>\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc:<\/p>\n<p>\u0628\u06cc\u0627\u0646\u06af\u0631 \u0628\u0648\u062f\u0646: \u06a9\u062f \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0648 \u062e\u0648\u062f \u062a\u0648\u0636\u06cc\u062d\u06cc \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u06a9\u067e\u0633\u0648\u0644\u0627\u0633\u06cc\u0648\u0646: \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0633\u0628 \u0648 \u06a9\u0627\u0631 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0634\u0626 \u0627\u0631\u0632\u0634 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f \u0648 \u0627\u0632 \u062b\u0628\u0627\u062a \u062f\u0631 \u0647\u0631 \u0645\u06a9\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u06a9\u0627\u0647\u0634 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a: \u0628\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0627\u0645\u0646\u0647 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647\u060c \u062e\u0637\u0631 \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0627\u062f\u0631\u0633\u062a \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u06cc\u062f.<\/p>\n<p>\u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f: \u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0642\u0631\u0627\u0631 \u062f\u0627\u062f \u0648 \u0627\u0635\u0644 DRY (\u062e\u0648\u062f\u062a \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0646\u06a9\u0646) \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0647 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f Value Objects \u062f\u0631 NET \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<p>  \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<\/p>\n<p>\u0627\u0645\u0631\u0648\u0632 \u0628\u0647 \u0634\u0645\u0627 \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0628\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644 \u06a9\u0647 \u0645\u0633\u0626\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646\u060c \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0648 \u0645\u062d\u0645\u0648\u0644\u0647 \u0647\u0627\u06cc \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0633\u0641\u0627\u0631\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u062f\u0627\u0631\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<p>\u0645\u0634\u062a\u0631\u06cc\u0627\u0646<br \/>\n\u0633\u0641\u0627\u0631\u0634\u0627\u062a\u060c \u0645\u0648\u0627\u0631\u062f \u0633\u0641\u0627\u0631\u0634<br \/>\n\u0645\u062d\u0645\u0648\u0644\u0647 \u0647\u0627\u060c \u0627\u0642\u0644\u0627\u0645 \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644<\/p>\n<p>\u0645\u0646 \u0627\u0632 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc Domain Driven Design \u0628\u0631\u0627\u06cc \u0646\u0647\u0627\u062f\u0647\u0627\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645.\u0628\u06cc\u0627\u06cc\u06cc\u062f a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 Customer \u0648 Shipment \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f:<\/p>\n<p>public class Customer<br \/>\n{<br \/>\n    public Guid Id { get; private set; }<br \/>\n    public string FirstName { get; private set; }<br \/>\n    public string LastName { get; private set; }<br \/>\n    public string Email { get; private set; }<br \/>\n    public string PhoneNumber { get; private set; }<br \/>\n    public IReadOnlyListOrder&gt; Orders =&gt; _orders.AsReadOnly();<\/p>\n<p>    private readonly ListOrder&gt; _orders = [];<\/p>\n<p>    private Customer() { }<\/p>\n<p>    public static Customer Create(<br \/>\n        string firstName,<br \/>\n        string lastName,<br \/>\n        string email,<br \/>\n        string phoneNumber)<br \/>\n    {<br \/>\n        return new Customer<br \/>\n        {<br \/>\n            Id = Guid.NewGuid(),<br \/>\n            FirstName = firstName,<br \/>\n            LastName = lastName,<br \/>\n            Email = email,<br \/>\n            PhoneNumber = phoneNumber<br \/>\n        };<br \/>\n    }<\/p>\n<p>    public void AddOrder(Order order)<br \/>\n    {<br \/>\n        _orders.Add(order);<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>public class Shipment<br \/>\n{<br \/>\n    private readonly ListShipmentItem&gt; _items = [];<\/p>\n<p>    public Guid Id { get; private set; }<\/p>\n<p>    public string Number { get; private set; }<\/p>\n<p>    public Guid OrderId { get; private set; }<\/p>\n<p>    public string Address { get; private set; }<\/p>\n<p>    public string Carrier { get; private set; }<\/p>\n<p>    public string ReceiverEmail { get; private set; }<\/p>\n<p>    public ShipmentStatus Status { get; private set; }<\/p>\n<p>    public IReadOnlyListShipmentItem&gt; Items =&gt; _items.AsReadOnly();<\/p>\n<p>    public DateTime CreatedAt { get; private set; }<\/p>\n<p>    public DateTime? UpdatedAt { get; private set; }<\/p>\n<p>    private Shipment()<br \/>\n    {<br \/>\n    }<\/p>\n<p>    public static Shipment Create(<br \/>\n        string number,<br \/>\n        Guid orderId,<br \/>\n        string address,<br \/>\n        string carrier,<br \/>\n        string receiverEmail,<br \/>\n        ListShipmentItem&gt; items)<br \/>\n    {<br \/>\n        var shipment = new Shipment<br \/>\n        {<br \/>\n            Id = Guid.NewGuid(),<br \/>\n            Number = number,<br \/>\n            OrderId = orderId,<br \/>\n            Address = address,<br \/>\n            Carrier = carrier,<br \/>\n            ReceiverEmail = receiverEmail,<br \/>\n            Status = ShipmentStatus.Created,<br \/>\n            CreatedAt = DateTime.UtcNow<br \/>\n        };<\/p>\n<p>        shipment.AddItems(items);<\/p>\n<p>        return shipment;<br \/>\n    }<\/p>\n<p>    public void AddItems(ListShipmentItem&gt; items)<br \/>\n    {<br \/>\n        _items.AddRange(items);<br \/>\n        UpdatedAt = DateTime.UtcNow;<br \/>\n    }<\/p>\n<p>    public void AddItem(ShipmentItem item)<br \/>\n    {<br \/>\n        _items.Add(item);<br \/>\n        UpdatedAt = DateTime.UtcNow;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06cc\u0646 \u0645\u0648\u062c\u0648\u062f\u0627\u062a \u0628\u0647 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0648\u0633\u0648\u0627\u0633 \u062f\u0627\u0631\u0646\u062f: \u0634\u0645\u0627\u0631\u0647 \u0645\u062d\u0645\u0648\u0644\u0647\u060c \u0622\u062f\u0631\u0633\u060c \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u060c \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0648 \u063a\u06cc\u0631\u0647.\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u062d\u0648\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0627\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0622\u0628\u062c\u06a9\u062a \u0647\u0627\u06cc \u0627\u0631\u0632\u0634\u06cc \u062f\u0631 \u062f\u0627\u062a \u0646\u062a<\/p>\n<p>\u0645\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0644\u06cc\u0633\u062a \u06a9\u0646\u0645:<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 ValueOf<br \/>\n\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 C# Records<br \/>\n\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 C# Record Structs<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u06af\u0632\u06cc\u0646\u0647 \u0631\u0627 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 ValueOf<\/p>\n<p>ValueOf \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u06a9\u062f\u0647\u0627\u06cc boilerplate \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0628\u0633\u062a\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>dotnet add package ValueOf<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a ValueOf \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634:<\/p>\n<p>using ValueOf;<\/p>\n<p>public class EmailAddress : ValueOfstring, EmailAddress&gt;<br \/>\n{<br \/>\n    protected override void Validate()<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(Value) || !Value.Contains(&#8220;@&#8221;))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Invalid email address.&#8221;);<br \/>\n        }<br \/>\n    }<br \/>\n}<\/p>\n<p>public class OrderNumber : ValueOfstring, OrderNumber&gt;<br \/>\n{<br \/>\n    protected override void Validate()<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(Value))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Order number cannot be empty.&#8221;);<br \/>\n        }<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0644\u0627\u0633 Value Object (EmailAddress \u0648 OrderNumber) \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u067e\u0627\u06cc\u0647 \u0628\u0647 \u0627\u0631\u062b \u0628\u0628\u0631\u06cc\u062f ValueOf \u06a9\u0644\u0627\u0633 \u0648 \u0627\u0631\u0627\u0626\u0647 2 \u0646\u0648\u0639 \u0639\u0645\u0648\u0645\u06cc:<\/p>\n<p>\u06cc\u06a9 \u0646\u0648\u0639 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0632\u06cc\u0631\u062e\u0637 \u062f\u0627\u0631<br \/>\n\u062e\u0648\u062f \u06cc\u06a9 \u0646\u0648\u0639 Object \u0645\u0642\u062f\u0627\u0631<\/p>\n<p>ValueOf  \u0627\u0632 \u062a\u0627\u067e\u0644 \u0647\u0627\u06cc \u0633\u06cc \u0634\u0627\u0631\u067e \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u06af\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0634\u06cc \u0645\u0642\u062f\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0686\u0646\u062f\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0622\u062f\u0631\u0633:<\/p>\n<p>using ValueOf;<\/p>\n<p>public class Address : ValueOfstring Street, string City, string Zip), Address&gt;<br \/>\n{<br \/>\n    protected override void Validate()<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(Value.Street))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Street cannot be empty.&#8221;);<br \/>\n        }<\/p>\n<p>        if (string.IsNullOrWhiteSpace(Value.City))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;City cannot be empty.&#8221;);<br \/>\n        }<\/p>\n<p>        if (string.IsNullOrWhiteSpace(Value.Zip))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Zip code cannot be empty.&#8221;);<br \/>\n        }<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0627\u06cc\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>var email = EmailAddress.From(&#8220;anton@test.com&#8221;);<br \/>\nvar orderNumber = OrderNumber.From(&#8220;ORD-12345&#8221;);<br \/>\nvar address = Address.From((&#8220;123 Main St&#8221;, &#8220;Springfield&#8221;, &#8220;12345&#8221;));<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f Value \u0648\u06cc\u0698\u06af\u06cc \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u0642\u062f\u0627\u0631 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634:<\/p>\n<p>string emailValue = email.Value;<br \/>\nstring orderNumberValue = orderNumber.Value;<br \/>\n(string street, string city, string zip) = address.Value;<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627<\/p>\n<p>\u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Value Objects \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f ValueOf \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u060c \u062d\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f.\u0686\u0647 \u0645\u06cc \u0634\u0648\u062f \u0627\u06af\u0631 \u0628\u0647 \u0634\u0645\u0627 \u0628\u06af\u0648\u06cc\u0645 \u06a9\u0647 \u0633\u06cc \u0634\u0627\u0631\u067e \u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062a\u0645\u0627\u0645 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u06cc\u06a9 \u0631\u0648\u0634 \u0648\u0627\u0642\u0639\u0627 \u0645\u062f\u0631\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f Value Object \u062f\u0631 \u062f\u0627\u062a \u0646\u062a \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0627\u0646\u0648\u0627\u0639 \u0645\u0631\u062c\u0639 \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f \u0648 \u0628\u0631\u0627\u0628\u0631\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0622\u0646\u0647\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u0647\u0633\u062a\u0646\u062f.\u0622\u0646\u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u0634\u0627\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0646\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0631\u062c\u0639.\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0631\u0648\u0634 \u0622\u0645\u0627\u062f\u0647 &#8220;ToString&#8221; \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0627\u0634\u06cc\u0627\u0621 \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>public record EmailAddress<br \/>\n{<br \/>\n    public string Value { get; }<\/p>\n<p>    public EmailAddress(string value)<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(value) || !value.Contains(&#8220;@&#8221;))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Invalid email address.&#8221;, nameof(value));<br \/>\n        }<\/p>\n<p>        Value = value;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0627\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0646\u062f\u0627\u0631\u06cc\u062f EmailAddress \u0648 \u0633\u0627\u06cc\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0633\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>public record EmailAddress(string Value);<br \/>\npublic record OrderNumber(string Value);<br \/>\npublic record Address(string Street, string City, string Zip);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062a\u06a9 \u062e\u0637 \u06a9\u062f\u060c \u0628\u0627\u0634\u06a9\u0648\u0647.<\/p>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0631\u06a9\u0648\u0631\u062f<\/p>\n<p>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u0646\u0648\u0627\u0639 \u0645\u0631\u062c\u0639 \u0647\u0633\u062a\u0646\u062f.\u0627\u06af\u0631 \u0628\u0647 \u062a\u062e\u0635\u06cc\u0635 \u062d\u0627\u0641\u0638\u0647 \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc \u062f\u0647\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f readonly record structs \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc.\u0622\u0646\u0647\u0627 \u0647\u0645\u0627\u0646 \u0631\u0641\u062a\u0627\u0631 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f records \u0627\u0645\u0627 \u0622\u0646\u0647\u0627 \u0627\u0646\u0648\u0627\u0639 \u0627\u0631\u0632\u0634 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u067e\u0634\u062a\u0647 \u062a\u062e\u0635\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062e\u0635\u06cc \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0622\u0646 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a record structs:<\/p>\n<p>public readonly record struct EmailAddress<br \/>\n{<br \/>\n    public string Value { get; }<\/p>\n<p>    public EmailAddress(string value)<br \/>\n    {<br \/>\n        if (string.IsNullOrWhiteSpace(value) || !value.Contains(&#8220;@&#8221;))<br \/>\n        {<br \/>\n            throw new ArgumentException(&#8220;Invalid email address.&#8221;, nameof(value));<br \/>\n        }<\/p>\n<p>        Value = value;<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06cc\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0645\u062e\u062a\u0635\u0631\u062a\u0631:<\/p>\n<p>public readonly record struct EmailAddress(string Value);<br \/>\npublic readonly record struct OrderNumber(string Value);<br \/>\npublic readonly record struct Address(string Street, string City, string Zip);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 Customer \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u0628\u0627 Value Objects \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/p>\n<p>public class Customer<br \/>\n{<br \/>\n    public Guid Id { get; private set; }<br \/>\n    public FirstName FirstName { get; private set; }<br \/>\n    public LastName LastName { get; private set; }<br \/>\n    public EmailAddress Email { get; private set; }<br \/>\n    public PhoneNumber PhoneNumber { get; private set; }<br \/>\n    public IReadOnlyListOrder&gt; Orders =&gt; _orders.AsReadOnly();<\/p>\n<p>    private readonly ListOrder&gt; _orders = [];<\/p>\n<p>    private Customer() { }<\/p>\n<p>    public static Customer Create(<br \/>\n        FirstName firstName,<br \/>\n        LastName lastName,<br \/>\n        EmailAddress email,<br \/>\n        PhoneNumber phoneNumber)<br \/>\n    {<br \/>\n        return new Customer<br \/>\n        {<br \/>\n            Id = Guid.NewGuid(),<br \/>\n            FirstName = firstName,<br \/>\n            LastName = lastName,<br \/>\n            Email = email,<br \/>\n            PhoneNumber = phoneNumber<br \/>\n        };<br \/>\n    }<\/p>\n<p>    public void AddOrder(Order order)<br \/>\n    {<br \/>\n        _orders.Add(order);<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0646\u06af\u0627\u0634\u062a \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u062f\u0631 EF Core<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u0645\u0639\u0631\u0641\u06cc Value Objects \u062f\u0631 \u0645\u062f\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u062e\u0648\u062f\u060c \u0628\u0627\u06cc\u062f EF Core Mapping \u062e\u0648\u062f \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u062f.\u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u0639\u0645\u0648\u0644 \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<p>builder.Property(x =&gt; x.FirstName).IsRequired();<br \/>\nbuilder.Property(x =&gt; x.LastName).IsRequired();<br \/>\nbuilder.Property(x =&gt; x.Email).IsRequired();<br \/>\nbuilder.Property(x =&gt; x.PhoneNumber).IsRequired();<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0627\u06cc\u062f \u0627\u0632 \u062a\u0628\u062f\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 EF Core \u0628\u06af\u0648\u06cc\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 Value Object \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u06af\u0627\u0634\u062a \u06a9\u0646\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0647 ValueObjects \u0646\u06af\u0627\u0634\u062a \u06a9\u0646\u062f:<\/p>\n<p>builder.Property(x =&gt; x.Email)<br \/>\n    .HasConversion(<br \/>\n        email =&gt; email.Value,<br \/>\n        value =&gt; new EmailAddress(value)<br \/>\n    )<br \/>\n    .IsRequired();<\/p>\n<p>builder.Property(x =&gt; x.PhoneNumber)<br \/>\n    .HasConversion(<br \/>\n        phoneNumber =&gt; phoneNumber.Value,<br \/>\n        value =&gt; new PhoneNumber(value)<br \/>\n    )<br \/>\n    .IsRequired();<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0647 \u06a9\u062f \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 Value Objects \u0645\u0632\u0627\u06cc\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0628\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>  \u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0648 \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO<\/p>\n<p>Value Object \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u062e\u0627\u0635 \u0634\u0645\u0627 \u0647\u0633\u062a\u0646\u062f\u060c \u062f\u0646\u06cc\u0627\u06cc \u062e\u0627\u0631\u062c \u0646\u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646\u0647\u0627 \u0628\u062f\u0627\u0646\u062f.\u0648 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO \u0639\u0645\u0648\u0645\u06cc \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0633\u0627\u062f\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<p>\u062f\u0627\u0634\u062a\u0646 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0633\u0627\u062f\u0647 \u062f\u0631 \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO \u0648 \u0646\u06af\u0627\u0634\u062a \u0622\u0646\u0647\u0627 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 Value Object \u0648 \u0628\u0627\u0644\u0639\u06a9\u0633\u060c \u062a\u0645\u0631\u06cc\u0646 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0645\u0646 \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u00ab\u0627\u06cc\u062c\u0627\u062f \u0645\u0634\u062a\u0631\u06cc\u00bb \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0645:<\/p>\n<p>var customer = Customer.Create(<br \/>\n    firstName: new FirstName(request.FirstName),<br \/>\n    lastName: new LastName(request.LastName),<br \/>\n    email: new EmailAddress(request.Email),<br \/>\n    phoneNumber: new PhoneNumber(request.PhoneNumber)<br \/>\n);<\/p>\n<p>await customerRepository.AddAsync(customer, cancellationToken);<br \/>\nawait unitOfWork.SaveChangesAsync(cancellationToken);<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0648 \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0628\u0647 CustomerResponse \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634:<\/p>\n<p>internal static class MappingExtensions<br \/>\n{<br \/>\n    public static CustomerResponse MapToResponse(this Customer customer)<br \/>\n    {<br \/>\n        return new CustomerResponse(<br \/>\n            CustomerId: customer.Id,<br \/>\n            FirstName: customer.FirstName.Value,<br \/>\n            LastName: customer.LastName.Value,<br \/>\n            Email: customer.Email.Value,<br \/>\n            PhoneNumber: customer.PhoneNumber.Value<br \/>\n        );<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062e\u0644\u0627\u0635\u0647<\/p>\n<p>\u0627\u06af\u0631 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0628\u0627 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a\u06cc \u062f\u0631 \u06a9\u062f \u062e\u0648\u062f \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0647 \u0627\u06cc\u062f \u06a9\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 (\u06cc\u0627 \u0647\u0631 \u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631\u06cc) \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a &#8211; \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0632 Value Objects \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.\u0633\u0648\u0627\u0628\u0642 \u0633\u06cc \u0634\u0627\u0631\u067e \u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0631\u06a9\u0648\u0631\u062f \u0641\u0642\u0637 \u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0631\u0627\u0647\u06cc \u0632\u06cc\u0628\u0627\u060c \u0622\u0633\u0627\u0646 \u0648 \u0633\u0631\u06cc\u0639 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u062f\u0648\u0646 \u06a9\u062f \u062f\u06cc\u06af \u0628\u062e\u0627\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<p>\u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646: antondevtips.com \u0645\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u062f\u0627\u062a \u0646\u062a \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0645.\u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0647\u062a\u0631 \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f.\u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n<div data-article-id=\"2003826\" id=\"article-body\">\n<p><strong>\u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc<\/strong> \u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0627\u0633\u062a.<br \/>\u0627\u06cc\u0646 \u06cc\u06a9 \u0636\u062f \u0627\u0644\u06af\u0648\u06cc \u0631\u0627\u06cc\u062c \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u062f \u0646\u0627\u0645\u0634\u062e\u0635 \u0648 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0633\u062e\u062a\u200c\u062a\u0631 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u0628\u0647 \u0634\u0645\u0627 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627 \u0634\u0648\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Value Objects \u062f\u0631 \u062f\u0627\u062a \u0646\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0631\u0633\u06cc\u062f\u06af\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<blockquote>\n<p><strong><em>\u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646: antondevtips.com \u0645\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u062f\u0627\u062a \u0646\u062a \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0645.<\/em><\/strong><br \/><strong><em>\u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0647\u062a\u0631 \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f.<\/em><\/strong><br \/><strong><em>\u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/em><\/strong><\/p>\n<\/blockquote>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%DA%86%D8%B1%D8%A7_%D9%88%D8%B3%D9%88%D8%A7%D8%B3_%D8%A8%D8%AF%D9%88%DB%8C_%DB%8C%DA%A9_%D9%85%D8%B4%DA%A9%D9%84_%D8%A7%D8%B3%D8%AA%D8%9F\" >\u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D9%86%D9%85%D9%88%D9%86%D9%87_%D9%87%D8%A7%DB%8C%DB%8C_%D8%A7%D8%B2_%D9%88%D8%B3%D9%88%D8%A7%D8%B3_%D8%A7%D9%88%D9%84%DB%8C%D9%87\" >\u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4%DB%8C_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%DB%8C%DA%A9_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C\" >\u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B1%D8%B2%D8%B4%DB%8C_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AA_%D9%86%D8%AA\" >\u0627\u06cc\u062c\u0627\u062f \u0622\u0628\u062c\u06a9\u062a \u0647\u0627\u06cc \u0627\u0631\u0632\u0634\u06cc \u062f\u0631 \u062f\u0627\u062a \u0646\u062a<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A8%D8%A7_ValueOf\" >\u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 ValueOf<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A8%D8%A7_%D8%B1%DA%A9%D9%88%D8%B1%D8%AF%D9%87%D8%A7\" >\u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A8%D8%A7_%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1%D9%87%D8%A7%DB%8C_%D8%B1%DA%A9%D9%88%D8%B1%D8%AF\" >\u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0631\u06a9\u0648\u0631\u062f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D9%86%DA%AF%D8%A7%D8%B4%D8%AA_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%AF%D8%B1_EF_Core\" >\u0646\u06af\u0627\u0634\u062a \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u062f\u0631 EF Core<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D9%88_%D9%85%D8%AF%D9%84_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA%D9%BE%D8%A7%D8%B3%D8%AEDTO\" >\u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0648 \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/a-modern-way-to-create-value-objects-to-solve-primitive-obsession-in-net-1gkm\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87\" >\u062e\u0644\u0627\u0635\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%86%D8%B1%D8%A7_%D9%88%D8%B3%D9%88%D8%A7%D8%B3_%D8%A8%D8%AF%D9%88%DB%8C_%DB%8C%DA%A9_%D9%85%D8%B4%DA%A9%D9%84_%D8%A7%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  \u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc<\/strong> \u0632\u0645\u0627\u0646\u06cc \u0627\u062a\u0641\u0627\u0642 \u0645\u06cc\u200c\u0627\u0641\u062a\u062f \u06a9\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u067e\u0627\u06cc\u0647 (\u0645\u0627\u0646\u0646\u062f int\u060c string \u06cc\u0627 DateTime) \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062f\u0631 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.<br \/>\u0627\u06cc\u0646 \u0639\u0645\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u062f \u0646\u0627\u0645\u0634\u062e\u0635\u060c \u0627\u0634\u06a9\u0627\u0644\u0627\u062a \u0648 \u0645\u0634\u06a9\u0644 \u062f\u0631 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0648 \u06af\u0633\u062a\u0631\u0634 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0645\u0627 \u0634\u0648\u062f.<\/p>\n<p><strong>\u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<\/strong><\/p>\n<ul>\n<li>\n<strong>\u0639\u062f\u0645 \u0628\u06cc\u0627\u0646:<\/strong> \u0627\u0646\u0648\u0627\u0639 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f int \u06cc\u0627 string \u0645\u0639\u0646\u0627\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u0631\u0648\u0634\u0646 \u0646\u0645\u06cc \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u060c \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u06cc\u06a9 URL \u0628\u0627\u0634\u062f\u060c \u0627\u0645\u0627 \u0647\u06cc\u0686 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u062a\u0634\u062e\u06cc\u0635 \u0641\u0642\u0637 \u0628\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0646\u0648\u0639 \u0622\u0646 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<\/li>\n<li>\n<strong>\u0627\u0641\u0632\u0627\u06cc\u0634 \u062e\u0637\u0631 \u062e\u0637\u0627:<\/strong> \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u0632 \u06cc\u06a9 \u0646\u0648\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0645\u0641\u0627\u0647\u06cc\u0645 \u0645\u062e\u062a\u0644\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0627\u062f\u0631\u0633\u062a \u0622\u0633\u0627\u0646 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0628\u0631\u0627\u06cc \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0648 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u06cc\u0645\u06cc\u0644\u06cc \u0634\u0648\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0645\u0648\u0631\u062f \u0627\u0646\u062a\u0638\u0627\u0631 \u0627\u0633\u062a.<\/li>\n<li>\n<strong>\u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u067e\u0631\u0627\u06a9\u0646\u062f\u0647:<\/strong> \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u0648\u0627\u0639 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0627\u063a\u0644\u0628 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u067e\u0631\u0627\u06a9\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a\u060c \u0628\u0627\u06cc\u062f \u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f\u060c \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u062a\u06a9\u0631\u0627\u0631 \u0648 \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0634\u0648\u062f.<\/li>\n<li>\n<strong>\u0645\u0634\u06a9\u0644 \u062f\u0631 \u062a\u062f\u0648\u06cc\u0646 \u06a9\u062f:<\/strong> \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0631\u0634\u062f \u0645\u06cc \u06a9\u0646\u062f\u060c \u0646\u06cc\u0627\u0632\u0647\u0627 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0646\u0646\u062f. \u0627\u06af\u0631 \u062f\u0631 \u0647\u0645\u0647 \u062c\u0627 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0627\u06cc\u062c\u0627\u062f \u0627\u06cc\u0646 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0628\u0647 \u0631\u0648\u0634\u06cc \u062b\u0627\u0628\u062a \u0648 \u0628\u062f\u0648\u0646 \u0634\u06a9\u0633\u062a \u062f\u0634\u0648\u0627\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D9%88%D9%86%D9%87_%D9%87%D8%A7%DB%8C%DB%8C_%D8%A7%D8%B2_%D9%88%D8%B3%D9%88%D8%A7%D8%B3_%D8%A7%D9%88%D9%84%DB%8C%D9%87\"><\/span>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u062b\u0627\u0644\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0631 \u0622\u0646 a <code>User<\/code> \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u062f\u0627\u0631\u062f <code>Email<\/code> \u062f\u0627\u0631\u0627\u06cc\u06cc<br \/>\u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f <code>User<\/code> \u0634\u06cc<\/p>\n<p>\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0628\u0647 \u0686\u0646\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0632\u06cc\u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc webapi \u062e\u0648\u062f \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648\u0631\u0648\u062f\u06cc \u062f\u0627\u0631\u06cc\u062f.<br \/>\u0627\u0645\u0627 \u062d\u0642\u06cc\u0642\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0631\u0648\u062f\u06cc\u060c \u0634\u0645\u0627 \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u0627\u0634\u06a9\u0627\u0644 \u062f\u0631 \u06a9\u062f \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u0631\u0627 \u062f\u0631 \u0633\u0627\u06cc\u0631 \u0627\u062c\u0632\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0646\u062c\u0627\u062a \u0646\u0645\u06cc\u200c\u062f\u0647\u062f.<br \/>\u0686\u0646\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0631\u0648\u0634\u06cc \u0645\u062d\u0628\u0648\u0628 \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc Domain Driven \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0647\u0646\u06af\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u062e\u0648\u062f \u06cc\u06a9 \u0645\u062d\u0627\u0641\u0638 \u0627\u06cc\u0645\u0646\u06cc \u0646\u0647\u0627\u06cc\u06cc \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 (\u0628\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0633\u0627\u062f\u0647\u060c \u063a\u06cc\u0631 \u0622\u0645\u0627\u062f\u0647 \u062a\u0648\u0644\u06cc\u062f):<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">User<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Email<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">User<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">email<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">)<\/span> <span class=\"p\">||<\/span> <span class=\"p\">!<\/span><span class=\"n\">email<\/span><span class=\"p\">.<\/span><span class=\"nf\">Contains<\/span><span class=\"p\">(<\/span><span class=\"s\">\"@\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Invalid email address\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">nameof<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">));<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">Email<\/span> <span class=\"p\">=<\/span> <span class=\"n\">email<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><strong>\u0686\u0631\u0627 \u0627\u06cc\u0646 \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u061f<\/strong><\/p>\n<ul>\n<li>\u0648\u06cc\u0698\u06af\u06cc Email \u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0634\u062a\u0647 \u0627\u0633\u062a\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u0646\u0648\u0639 \u0631\u0634\u062a\u0647 \u0627\u06cc \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u062c\u0627\u06cc \u062f\u0647\u062f\u060c \u0646\u0647 \u0641\u0642\u0637 \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u06cc\u0645\u06cc\u0644 \u0645\u0639\u062a\u0628\u0631.<\/li>\n<li>\u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u0647 \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u062f\u0631 \u062c\u0627\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631\u06cc \u06a9\u0647 \u0627\u06cc\u0645\u06cc\u0644 \u062f\u0627\u0631\u06cc\u062f \u0631\u0627 \u062f\u0634\u0648\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u0627\u06af\u0631 \u0628\u062e\u0634 \u062f\u06cc\u06af\u0631\u06cc \u0627\u0632 \u067e\u0627\u06cc\u06af\u0627\u0647 \u06a9\u062f \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u06cc\u0645\u06cc\u0644 \u0647\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0645\u0646\u0637\u0642 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u06a9\u0631\u0627\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<\/ul>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u062b\u0627\u0644 \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">User<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Email<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Username<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">User<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">email<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">username<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Email is required\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">nameof<\/span><span class=\"p\">(<\/span><span class=\"n\">email<\/span><span class=\"p\">));<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">username<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Username is required\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">nameof<\/span><span class=\"p\">(<\/span><span class=\"n\">username<\/span><span class=\"p\">));<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">Email<\/span> <span class=\"p\">=<\/span> <span class=\"n\">email<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">Username<\/span> <span class=\"p\">=<\/span> <span class=\"n\">username<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0633\u0639\u06cc \u06a9\u0646\u06cc\u0645 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"kt\">var<\/span> <span class=\"n\">user<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">User<\/span><span class=\"p\">(<\/span><span class=\"s\">\"anton@test.com\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"anton\"<\/span><span class=\"p\">);<\/span>\n<span class=\"kt\">var<\/span> <span class=\"n\">user<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">User<\/span><span class=\"p\">(<\/span><span class=\"s\">\"anton\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"anton@test.com\"<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u06a9\u062f \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f. \u0622\u06cc\u0627 \u0645\u062a\u0648\u062c\u0647 \u0645\u0634\u06a9\u0644\u06cc \u0634\u062f\u06cc\u062f\u061f<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>string<\/code> \u0627\u06cc\u0645\u06cc\u0644 \u0648 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f &#8211; \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u062f.<br \/>\u0648 \u0627\u06af\u0631 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0627\u0634\u06cc\u0627 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0646\u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0628\u0627\u0644\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0645\u060c \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0627\u0634\u062a\u0628\u0627\u0647 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0648\u0627\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f.<br \/>\u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0645\u0634\u06a9\u0644\u0627\u062a \u062c\u062f\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0631\u0627\u0647 \u062d\u0644 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a <strong>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc<\/strong>\u060c \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0631\u0641\u062a\u0627\u0631 \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0648\u0627\u062d\u062f \u0648\u0627\u062d\u062f \u0648 \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u0645\u062d\u0635\u0648\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4%DB%8C_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0686\u06cc\u0633\u062a\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc<\/strong> \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u062f\u0631 \u062f\u0627\u0645\u0646\u0647 \u0634\u0645\u0627 \u0627\u0633\u062a \u06a9\u0647 \u0647\u0648\u06cc\u062a \u0646\u062f\u0627\u0631\u062f \u0627\u0645\u0627 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f.<br \/>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 <code>Address<\/code> \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u0634\u06cc \u0627\u0631\u0632\u0634 \u0628\u0627\u0634\u062f\u060c \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0628\u0627 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u0622\u0646 (\u062e\u06cc\u0627\u0628\u0627\u0646\u060c \u0634\u0647\u0631\u060c \u067e\u0633\u062a) \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u06cc\u06a9 \u0645\u0641\u0647\u0648\u0645 \u06a9\u0644\u06cc\u062f\u06cc \u062f\u0631 \u0637\u0631\u0627\u062d\u06cc \u062f\u0627\u0645\u0646\u0647 \u0645\u062d\u0648\u0631 (DDD) \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p><strong>\u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc:<\/strong><\/p>\n<ul>\n<li>\u062a\u063a\u06cc\u06cc\u0631\u0646\u0627\u067e\u0630\u06cc\u0631\u06cc: \u067e\u0633 \u0627\u0632 \u0627\u06cc\u062c\u0627\u062f\u060c \u06cc\u06a9 \u0634\u06cc \u0627\u0631\u0632\u0634 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06cc\u0633\u062a. \u0647\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0645\u0646\u062c\u0631 \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>\u0628\u0631\u0627\u0628\u0631\u06cc: \u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u0634\u0627\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u060c \u0646\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0631\u062c\u0639.<\/li>\n<li>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc: \u0622\u0646\u0647\u0627 \u0628\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u0628\u0631 \u0631\u0648\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0645\u06cc \u062f\u0647\u0646\u062f \u06a9\u0647 \u062d\u0627\u0644\u062a \u0622\u0646\u0647\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.<\/li>\n<\/ul>\n<p><strong>\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc:<\/strong><\/p>\n<ul>\n<li>\n<strong>\u0628\u06cc\u0627\u0646\u06af\u0631 \u0628\u0648\u062f\u0646:<\/strong> \u06a9\u062f \u062e\u0648\u0627\u0646\u0627\u062a\u0631 \u0648 \u062e\u0648\u062f \u062a\u0648\u0636\u06cc\u062d\u06cc \u062a\u0631 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>\n<strong>\u06a9\u067e\u0633\u0648\u0644\u0627\u0633\u06cc\u0648\u0646:<\/strong> \u0642\u0648\u0627\u0646\u06cc\u0646 \u06a9\u0633\u0628 \u0648 \u06a9\u0627\u0631 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0634\u0626 \u0627\u0631\u0632\u0634 \u06af\u0646\u062c\u0627\u0646\u062f\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f \u0648 \u0627\u0632 \u062b\u0628\u0627\u062a \u062f\u0631 \u0647\u0631 \u0645\u06a9\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n<li>\n<strong>\u06a9\u0627\u0647\u0634 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a:<\/strong> \u0628\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0627\u0645\u0646\u0647 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647\u060c \u062e\u0637\u0631 \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0627\u062f\u0631\u0633\u062a \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0645\u06cc \u062f\u0647\u06cc\u062f.<\/li>\n<li>\n<strong>\u0642\u0627\u0628\u0644\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f:<\/strong> \u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 \u0628\u062e\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0642\u0631\u0627\u0631 \u062f\u0627\u062f \u0648 \u0627\u0635\u0644 DRY (\u062e\u0648\u062f\u062a \u0631\u0627 \u062a\u06a9\u0631\u0627\u0631 \u0646\u06a9\u0646) \u062a\u0631\u0648\u06cc\u062c \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u0647 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f Value Objects \u062f\u0631 NET \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%DB%8C%DA%A9_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C\"><\/span>\n<p>  \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0645\u0631\u0648\u0632 \u0628\u0647 \u0634\u0645\u0627 \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0646\u0634\u0627\u0646 \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f <strong>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc<\/strong> \u0628\u0631\u0627\u06cc \u06cc\u06a9 <strong>\u0628\u0631\u0646\u0627\u0645\u0647 \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644<\/strong> \u06a9\u0647 \u0645\u0633\u0626\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646\u060c \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0648 \u0645\u062d\u0645\u0648\u0644\u0647 \u0647\u0627\u06cc \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0633\u0641\u0627\u0631\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631 \u062f\u0627\u0631\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\u0645\u0634\u062a\u0631\u06cc\u0627\u0646<\/li>\n<li>\u0633\u0641\u0627\u0631\u0634\u0627\u062a\u060c \u0645\u0648\u0627\u0631\u062f \u0633\u0641\u0627\u0631\u0634<\/li>\n<li>\u0645\u062d\u0645\u0648\u0644\u0647 \u0647\u0627\u060c \u0627\u0642\u0644\u0627\u0645 \u062d\u0645\u0644 \u0648 \u0646\u0642\u0644<\/li>\n<\/ul>\n<p>\u0645\u0646 \u0627\u0632 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc Domain Driven Design \u0628\u0631\u0627\u06cc \u0646\u0647\u0627\u062f\u0647\u0627\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0645.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f a \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 <code>Customer<\/code> \u0648 <code>Shipment<\/code> \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Customer<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">Guid<\/span> <span class=\"n\">Id<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">FirstName<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">LastName<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Email<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">PhoneNumber<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">IReadOnlyList<\/span><span class=\"p\"><span class=\"n\">Order<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">Orders<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">_orders<\/span><span class=\"p\">.<\/span><span class=\"nf\">AsReadOnly<\/span><span class=\"p\">();<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">List<\/span><span class=\"p\"><span class=\"n\">Order<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">_orders<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[];<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"nf\">Customer<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"n\">Customer<\/span> <span class=\"nf\">Create<\/span><span class=\"p\">(<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">firstName<\/span><span class=\"p\">,<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">lastName<\/span><span class=\"p\">,<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">email<\/span><span class=\"p\">,<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">phoneNumber<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Customer<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">Id<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Guid<\/span><span class=\"p\">.<\/span><span class=\"nf\">NewGuid<\/span><span class=\"p\">(),<\/span>\n            <span class=\"n\">FirstName<\/span> <span class=\"p\">=<\/span> <span class=\"n\">firstName<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">LastName<\/span> <span class=\"p\">=<\/span> <span class=\"n\">lastName<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">Email<\/span> <span class=\"p\">=<\/span> <span class=\"n\">email<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">PhoneNumber<\/span> <span class=\"p\">=<\/span> <span class=\"n\">phoneNumber<\/span>\n        <span class=\"p\">};<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">AddOrder<\/span><span class=\"p\">(<\/span><span class=\"n\">Order<\/span> <span class=\"n\">order<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_orders<\/span><span class=\"p\">.<\/span><span class=\"nf\">Add<\/span><span class=\"p\">(<\/span><span class=\"n\">order<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Shipment<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">List<\/span><span class=\"p\"><span class=\"n\">ShipmentItem<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">_items<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[];<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">Guid<\/span> <span class=\"n\">Id<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Number<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">Guid<\/span> <span class=\"n\">OrderId<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Address<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Carrier<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">ReceiverEmail<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">ShipmentStatus<\/span> <span class=\"n\">Status<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">IReadOnlyList<\/span><span class=\"p\"><span class=\"n\">ShipmentItem<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">Items<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">_items<\/span><span class=\"p\">.<\/span><span class=\"nf\">AsReadOnly<\/span><span class=\"p\">();<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">DateTime<\/span> <span class=\"n\">CreatedAt<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">DateTime<\/span><span class=\"p\">?<\/span> <span class=\"n\">UpdatedAt<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"nf\">Shipment<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"n\">Shipment<\/span> <span class=\"nf\">Create<\/span><span class=\"p\">(<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">number<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">Guid<\/span> <span class=\"n\">orderId<\/span><span class=\"p\">,<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">address<\/span><span class=\"p\">,<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">carrier<\/span><span class=\"p\">,<\/span>\n        <span class=\"kt\">string<\/span> <span class=\"n\">receiverEmail<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">List<\/span><span class=\"p\"><span class=\"n\">ShipmentItem<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">items<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">shipment<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Shipment<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">Id<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Guid<\/span><span class=\"p\">.<\/span><span class=\"nf\">NewGuid<\/span><span class=\"p\">(),<\/span>\n            <span class=\"n\">Number<\/span> <span class=\"p\">=<\/span> <span class=\"n\">number<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">OrderId<\/span> <span class=\"p\">=<\/span> <span class=\"n\">orderId<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">Address<\/span> <span class=\"p\">=<\/span> <span class=\"n\">address<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">Carrier<\/span> <span class=\"p\">=<\/span> <span class=\"n\">carrier<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">ReceiverEmail<\/span> <span class=\"p\">=<\/span> <span class=\"n\">receiverEmail<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">Status<\/span> <span class=\"p\">=<\/span> <span class=\"n\">ShipmentStatus<\/span><span class=\"p\">.<\/span><span class=\"n\">Created<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">CreatedAt<\/span> <span class=\"p\">=<\/span> <span class=\"n\">DateTime<\/span><span class=\"p\">.<\/span><span class=\"n\">UtcNow<\/span>\n        <span class=\"p\">};<\/span>\n\n        <span class=\"n\">shipment<\/span><span class=\"p\">.<\/span><span class=\"nf\">AddItems<\/span><span class=\"p\">(<\/span><span class=\"n\">items<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"n\">shipment<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">AddItems<\/span><span class=\"p\">(<\/span><span class=\"n\">List<\/span><span class=\"p\"><span class=\"n\">ShipmentItem<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">items<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_items<\/span><span class=\"p\">.<\/span><span class=\"nf\">AddRange<\/span><span class=\"p\">(<\/span><span class=\"n\">items<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">UpdatedAt<\/span> <span class=\"p\">=<\/span> <span class=\"n\">DateTime<\/span><span class=\"p\">.<\/span><span class=\"n\">UtcNow<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">AddItem<\/span><span class=\"p\">(<\/span><span class=\"n\">ShipmentItem<\/span> <span class=\"n\">item<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_items<\/span><span class=\"p\">.<\/span><span class=\"nf\">Add<\/span><span class=\"p\">(<\/span><span class=\"n\">item<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">UpdatedAt<\/span> <span class=\"p\">=<\/span> <span class=\"n\">DateTime<\/span><span class=\"p\">.<\/span><span class=\"n\">UtcNow<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0645\u0648\u062c\u0648\u062f\u0627\u062a \u0628\u0647 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0648\u0633\u0648\u0627\u0633 \u062f\u0627\u0631\u0646\u062f: \u0634\u0645\u0627\u0631\u0647 \u0645\u062d\u0645\u0648\u0644\u0647\u060c \u0622\u062f\u0631\u0633\u060c \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644\u060c \u0634\u0645\u0627\u0631\u0647 \u062a\u0644\u0641\u0646 \u0648 \u063a\u06cc\u0631\u0647.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u062d\u0648\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0627\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A2%D8%A8%D8%AC%DA%A9%D8%AA_%D9%87%D8%A7%DB%8C_%D8%A7%D8%B1%D8%B2%D8%B4%DB%8C_%D8%AF%D8%B1_%D8%AF%D8%A7%D8%AA_%D9%86%D8%AA\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0622\u0628\u062c\u06a9\u062a \u0647\u0627\u06cc \u0627\u0631\u0632\u0634\u06cc \u062f\u0631 \u062f\u0627\u062a \u0646\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0645 \u0645\u062d\u0628\u0648\u0628 \u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0644\u06cc\u0633\u062a \u06a9\u0646\u0645:<\/p>\n<ul>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 ValueOf<\/li>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 C# Records<\/li>\n<li>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 C# Record Structs<\/li>\n<\/ul>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0631 \u06af\u0632\u06cc\u0646\u0647 \u0631\u0627 \u0639\u0645\u06cc\u0642 \u062a\u0631 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A8%D8%A7_ValueOf\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 ValueOf<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>ValueOf \u06cc\u06a9\u06cc \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0645\u062d\u0628\u0648\u0628 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0627\u0631\u0627\u0626\u0647 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u067e\u0627\u06cc\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u06a9\u062f\u0647\u0627\u06cc boilerplate \u0631\u0627 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0628\u0627\u06cc\u062f \u0628\u0633\u062a\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>dotnet add package ValueOf\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>ValueOf<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">using<\/span> <span class=\"nn\">ValueOf<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">EmailAddress<\/span> <span class=\"p\">:<\/span> <span class=\"n\">ValueOf<\/span><span class=\"p\"><span class=\"kt\">string<\/span><span class=\"p\">,<\/span> <span class=\"n\">EmailAddress<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">protected<\/span> <span class=\"k\">override<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Validate<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">Value<\/span><span class=\"p\">)<\/span> <span class=\"p\">||<\/span> <span class=\"p\">!<\/span><span class=\"n\">Value<\/span><span class=\"p\">.<\/span><span class=\"nf\">Contains<\/span><span class=\"p\">(<\/span><span class=\"s\">\"@\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Invalid email address.\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">OrderNumber<\/span> <span class=\"p\">:<\/span> <span class=\"n\">ValueOf<\/span><span class=\"p\"><span class=\"kt\">string<\/span><span class=\"p\">,<\/span> <span class=\"n\">OrderNumber<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">protected<\/span> <span class=\"k\">override<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Validate<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">Value<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Order number cannot be empty.\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u06a9\u0644\u0627\u0633 Value Object (EmailAddress \u0648 OrderNumber) \u062e\u0648\u062f \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u067e\u0627\u06cc\u0647 \u0628\u0647 \u0627\u0631\u062b \u0628\u0628\u0631\u06cc\u062f <code>ValueOf<\/code> \u06a9\u0644\u0627\u0633 \u0648 \u0627\u0631\u0627\u0626\u0647 2 \u0646\u0648\u0639 \u0639\u0645\u0648\u0645\u06cc:<\/p>\n<ul>\n<li>\u06cc\u06a9 \u0646\u0648\u0639 \u0627\u0628\u062a\u062f\u0627\u06cc\u06cc \u0632\u06cc\u0631\u062e\u0637 \u062f\u0627\u0631<\/li>\n<li>\u062e\u0648\u062f \u06cc\u06a9 \u0646\u0648\u0639 Object \u0645\u0642\u062f\u0627\u0631<\/li>\n<\/ul>\n<p><code>ValueOf<\/code>  \u0627\u0632 \u062a\u0627\u067e\u0644 \u0647\u0627\u06cc \u0633\u06cc \u0634\u0627\u0631\u067e \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0627\u06af\u0631 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0634\u06cc \u0645\u0642\u062f\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0686\u0646\u062f\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u062f\u060c \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0622\u062f\u0631\u0633:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">using<\/span> <span class=\"nn\">ValueOf<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Address<\/span> <span class=\"p\">:<\/span> <span class=\"n\">ValueOf<\/span><span class=\"p\"><span class=\"kt\">string<\/span> <span class=\"n\">Street<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">City<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Zip<\/span><span class=\"p\">),<\/span> <span class=\"n\">Address<\/span><span class=\"p\">&gt;<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">protected<\/span> <span class=\"k\">override<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Validate<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">Value<\/span><span class=\"p\">.<\/span><span class=\"n\">Street<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Street cannot be empty.\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">Value<\/span><span class=\"p\">.<\/span><span class=\"n\">City<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"City cannot be empty.\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"n\">Value<\/span><span class=\"p\">.<\/span><span class=\"n\">Zip<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Zip code cannot be empty.\"<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0627\u06cc\u0646 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"kt\">var<\/span> <span class=\"n\">email<\/span> <span class=\"p\">=<\/span> <span class=\"n\">EmailAddress<\/span><span class=\"p\">.<\/span><span class=\"nf\">From<\/span><span class=\"p\">(<\/span><span class=\"s\">\"anton@test.com\"<\/span><span class=\"p\">);<\/span>\n<span class=\"kt\">var<\/span> <span class=\"n\">orderNumber<\/span> <span class=\"p\">=<\/span> <span class=\"n\">OrderNumber<\/span><span class=\"p\">.<\/span><span class=\"nf\">From<\/span><span class=\"p\">(<\/span><span class=\"s\">\"ORD-12345\"<\/span><span class=\"p\">);<\/span>\n<span class=\"kt\">var<\/span> <span class=\"n\">address<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Address<\/span><span class=\"p\">.<\/span><span class=\"nf\">From<\/span><span class=\"p\">((<\/span><span class=\"s\">\"123 Main St\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Springfield\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"12345\"<\/span><span class=\"p\">));<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>Value<\/code> \u0648\u06cc\u0698\u06af\u06cc \u0628\u0631\u0627\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u0642\u062f\u0627\u0631 \u067e\u0646\u0647\u0627\u0646 \u062f\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"kt\">string<\/span> <span class=\"n\">emailValue<\/span> <span class=\"p\">=<\/span> <span class=\"n\">email<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">;<\/span>\n<span class=\"kt\">string<\/span> <span class=\"n\">orderNumberValue<\/span> <span class=\"p\">=<\/span> <span class=\"n\">orderNumber<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">street<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">city<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">zip<\/span><span class=\"p\">)<\/span> <span class=\"p\">=<\/span> <span class=\"n\">address<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A8%D8%A7_%D8%B1%DA%A9%D9%88%D8%B1%D8%AF%D9%87%D8%A7\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Value Objects \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u0646\u062f <code>ValueOf<\/code> \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u060c \u062d\u062a\u06cc \u0628\u06cc\u0634\u062a\u0631 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f.<br \/>\u0686\u0647 \u0645\u06cc \u0634\u0648\u062f \u0627\u06af\u0631 \u0628\u0647 \u0634\u0645\u0627 \u0628\u06af\u0648\u06cc\u0645 \u06a9\u0647 \u0633\u06cc \u0634\u0627\u0631\u067e <strong>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627<\/strong> \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u062a\u0645\u0627\u0645 \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n<p>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u06cc\u06a9 \u0631\u0648\u0634 \u0648\u0627\u0642\u0639\u0627 \u0645\u062f\u0631\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f Value Object \u062f\u0631 \u062f\u0627\u062a \u0646\u062a \u0647\u0633\u062a\u0646\u062f.<\/p>\n<p>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0627\u0646\u0648\u0627\u0639 \u0645\u0631\u062c\u0639 \u063a\u06cc\u0631\u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 \u0647\u0633\u062a\u0646\u062f \u0648 \u0628\u0631\u0627\u0628\u0631\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0622\u0646\u0647\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u062e\u0627\u0631\u062c \u0627\u0632 \u062c\u0639\u0628\u0647 \u0647\u0633\u062a\u0646\u062f.<br \/>\u0622\u0646\u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u0634\u0627\u0646 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f\u060c \u0646\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0631\u062c\u0639.<br \/>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0627\u0631\u0627\u06cc \u06cc\u06a9 \u0631\u0648\u0634 \u0622\u0645\u0627\u062f\u0647 &#8220;ToString&#8221; \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647 \u0631\u0648\u0634\u06cc \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0627\u0634\u06cc\u0627\u0621 \u06cc\u06a9\u0633\u0627\u0646 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">EmailAddress<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Value<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">EmailAddress<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"k\">value<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"k\">value<\/span><span class=\"p\">)<\/span> <span class=\"p\">||<\/span> <span class=\"p\">!<\/span><span class=\"k\">value<\/span><span class=\"p\">.<\/span><span class=\"nf\">Contains<\/span><span class=\"p\">(<\/span><span class=\"s\">\"@\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Invalid email address.\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">nameof<\/span><span class=\"p\">(<\/span><span class=\"k\">value<\/span><span class=\"p\">));<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">Value<\/span> <span class=\"p\">=<\/span> <span class=\"k\">value<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06af\u0631 \u0646\u06cc\u0627\u0632\u06cc \u0628\u0647 \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u0631 \u062f\u0627\u062e\u0644 \u0646\u062f\u0627\u0631\u06cc\u062f <code>EmailAddress<\/code> \u0648 \u0633\u0627\u06cc\u0631 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0632\u06cc\u0631 \u0633\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">EmailAddress<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">Value<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">OrderNumber<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">Value<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">Address<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">Street<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">City<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Zip<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u06a9 \u062e\u0637 \u06a9\u062f\u060c \u0628\u0627\u0634\u06a9\u0648\u0647.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A8%D8%A7_%D8%B3%D8%A7%D8%AE%D8%AA%D8%A7%D8%B1%D9%87%D8%A7%DB%8C_%D8%B1%DA%A9%D9%88%D8%B1%D8%AF\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0631\u06a9\u0648\u0631\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u06a9\u0648\u0631\u062f\u0647\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0641\u0648\u0642 \u0627\u0644\u0639\u0627\u062f\u0647 \u0627\u06cc \u0628\u0631\u0627\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0627\u0646\u0648\u0627\u0639 \u0645\u0631\u062c\u0639 \u0647\u0633\u062a\u0646\u062f.<br \/>\u0627\u06af\u0631 \u0628\u0647 \u062a\u062e\u0635\u06cc\u0635 \u062d\u0627\u0641\u0638\u0647 \u0627\u0647\u0645\u06cc\u062a \u0645\u06cc \u062f\u0647\u06cc\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>readonly record structs<\/code> \u0628\u0631\u0627\u06cc <strong>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc<\/strong>.<br \/>\u0622\u0646\u0647\u0627 \u0647\u0645\u0627\u0646 \u0631\u0641\u062a\u0627\u0631 \u0631\u0627 \u062f\u0627\u0631\u0646\u062f <code>records<\/code> \u0627\u0645\u0627 \u0622\u0646\u0647\u0627 \u0627\u0646\u0648\u0627\u0639 \u0627\u0631\u0632\u0634 \u0647\u0633\u062a\u0646\u062f \u0648 \u062f\u0631 \u067e\u0634\u062a\u0647 \u062a\u062e\u0635\u06cc\u0635 \u062f\u0627\u062f\u0647 \u0646\u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062e\u0635\u06cc \u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u0627 \u0622\u0646 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a <code>record structs<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">readonly<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">struct<\/span> <span class=\"n\">EmailAddress<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Value<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">EmailAddress<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"k\">value<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsNullOrWhiteSpace<\/span><span class=\"p\">(<\/span><span class=\"k\">value<\/span><span class=\"p\">)<\/span> <span class=\"p\">||<\/span> <span class=\"p\">!<\/span><span class=\"k\">value<\/span><span class=\"p\">.<\/span><span class=\"nf\">Contains<\/span><span class=\"p\">(<\/span><span class=\"s\">\"@\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"k\">throw<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">ArgumentException<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Invalid email address.\"<\/span><span class=\"p\">,<\/span> <span class=\"k\">nameof<\/span><span class=\"p\">(<\/span><span class=\"k\">value<\/span><span class=\"p\">));<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">Value<\/span> <span class=\"p\">=<\/span> <span class=\"k\">value<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u0645\u062e\u062a\u0635\u0631\u062a\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">readonly<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">struct<\/span> <span class=\"nf\">EmailAddress<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">Value<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">readonly<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">struct<\/span> <span class=\"nf\">OrderNumber<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">Value<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">readonly<\/span> <span class=\"k\">record<\/span> <span class=\"nc\">struct<\/span> <span class=\"nf\">Address<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span> <span class=\"n\">Street<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">City<\/span><span class=\"p\">,<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Zip<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 <code>Customer<\/code> \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u0628\u0627 Value Objects \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Customer<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">Guid<\/span> <span class=\"n\">Id<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">FirstName<\/span> <span class=\"n\">FirstName<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">LastName<\/span> <span class=\"n\">LastName<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">EmailAddress<\/span> <span class=\"n\">Email<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">PhoneNumber<\/span> <span class=\"n\">PhoneNumber<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">private<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">IReadOnlyList<\/span><span class=\"p\"><span class=\"n\">Order<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">Orders<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">_orders<\/span><span class=\"p\">.<\/span><span class=\"nf\">AsReadOnly<\/span><span class=\"p\">();<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">List<\/span><span class=\"p\"><span class=\"n\">Order<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">_orders<\/span> <span class=\"p\">=<\/span> <span class=\"p\">[];<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"nf\">Customer<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"n\">Customer<\/span> <span class=\"nf\">Create<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">FirstName<\/span> <span class=\"n\">firstName<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">LastName<\/span> <span class=\"n\">lastName<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">EmailAddress<\/span> <span class=\"n\">email<\/span><span class=\"p\">,<\/span>\n        <span class=\"n\">PhoneNumber<\/span> <span class=\"n\">phoneNumber<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"n\">Customer<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">Id<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Guid<\/span><span class=\"p\">.<\/span><span class=\"nf\">NewGuid<\/span><span class=\"p\">(),<\/span>\n            <span class=\"n\">FirstName<\/span> <span class=\"p\">=<\/span> <span class=\"n\">firstName<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">LastName<\/span> <span class=\"p\">=<\/span> <span class=\"n\">lastName<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">Email<\/span> <span class=\"p\">=<\/span> <span class=\"n\">email<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">PhoneNumber<\/span> <span class=\"p\">=<\/span> <span class=\"n\">phoneNumber<\/span>\n        <span class=\"p\">};<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">AddOrder<\/span><span class=\"p\">(<\/span><span class=\"n\">Order<\/span> <span class=\"n\">order<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">_orders<\/span><span class=\"p\">.<\/span><span class=\"nf\">Add<\/span><span class=\"p\">(<\/span><span class=\"n\">order<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%DA%AF%D8%A7%D8%B4%D8%AA_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B1%D8%B2%D8%B4_%D8%AF%D8%B1_EF_Core\"><\/span>\n<p>  \u0646\u06af\u0627\u0634\u062a \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u062f\u0631 EF Core<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u0633 \u0627\u0632 \u0645\u0639\u0631\u0641\u06cc Value Objects \u062f\u0631 \u0645\u062f\u0644 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u062e\u0648\u062f\u060c \u0628\u0627\u06cc\u062f EF Core Mapping \u062e\u0648\u062f \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u062f.<br \/>\u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u0639\u0645\u0648\u0644 \u0645\u0627\u0646\u0646\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Property<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">FirstName<\/span><span class=\"p\">).<\/span><span class=\"nf\">IsRequired<\/span><span class=\"p\">();<\/span>\n<span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Property<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">LastName<\/span><span class=\"p\">).<\/span><span class=\"nf\">IsRequired<\/span><span class=\"p\">();<\/span>\n<span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Property<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">Email<\/span><span class=\"p\">).<\/span><span class=\"nf\">IsRequired<\/span><span class=\"p\">();<\/span>\n<span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Property<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">PhoneNumber<\/span><span class=\"p\">).<\/span><span class=\"nf\">IsRequired<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627\u06cc\u062f \u0627\u0632 \u062a\u0628\u062f\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 EF Core \u0628\u06af\u0648\u06cc\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 Value Object \u0631\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u06af\u0627\u0634\u062a \u06a9\u0646\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0631\u0627 \u0628\u0647 ValueObjects \u0646\u06af\u0627\u0634\u062a \u06a9\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Property<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">Email<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">HasConversion<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">email<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">email<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">value<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EmailAddress<\/span><span class=\"p\">(<\/span><span class=\"k\">value<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">IsRequired<\/span><span class=\"p\">();<\/span>\n\n<span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Property<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">x<\/span><span class=\"p\">.<\/span><span class=\"n\">PhoneNumber<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">HasConversion<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">phoneNumber<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">phoneNumber<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">,<\/span>\n        <span class=\"k\">value<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">PhoneNumber<\/span><span class=\"p\">(<\/span><span class=\"k\">value<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"p\">.<\/span><span class=\"nf\">IsRequired<\/span><span class=\"p\">();<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u06a9\u062f \u0628\u06cc\u0634\u062a\u0631\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 Value Objects \u0645\u0632\u0627\u06cc\u0627\u06cc \u0632\u06cc\u0627\u062f\u06cc \u0628\u0647 \u0634\u0645\u0627 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B1%D8%B2%D8%B4_%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D9%88_%D9%85%D8%AF%D9%84_%D9%87%D8%A7%DB%8C_%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA%D9%BE%D8%A7%D8%B3%D8%AEDTO\"><\/span>\n<p>  \u0627\u0631\u0632\u0634 \u0627\u0634\u06cc\u0627\u0621 \u0648 \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Value Object \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0627\u0645\u0646\u0647 \u062e\u0627\u0635 \u0634\u0645\u0627 \u0647\u0633\u062a\u0646\u062f\u060c \u062f\u0646\u06cc\u0627\u06cc \u062e\u0627\u0631\u062c \u0646\u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646\u0647\u0627 \u0628\u062f\u0627\u0646\u062f.<br \/>\u0648 \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u062f\u0644\u200c\u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO \u0639\u0645\u0648\u0645\u06cc \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0633\u0627\u062f\u0647 \u0628\u0627\u0634\u0646\u062f.<\/p>\n<p>\u062f\u0627\u0634\u062a\u0646 \u0627\u0646\u0648\u0627\u0639 \u0627\u0648\u0644\u06cc\u0647 \u0633\u0627\u062f\u0647 \u062f\u0631 \u0645\u062f\u0644 \u0647\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a\/\u067e\u0627\u0633\u062e\/DTO \u0648 \u0646\u06af\u0627\u0634\u062a \u0622\u0646\u0647\u0627 \u0628\u0647 \u062f\u0627\u0645\u0646\u0647 Value Object \u0648 \u0628\u0627\u0644\u0639\u06a9\u0633\u060c \u062a\u0645\u0631\u06cc\u0646 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644\u060c \u0645\u0646 \u0646\u0642\u0634\u0647\u200c\u0628\u0631\u062f\u0627\u0631\u06cc \u0631\u0627 \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u00ab\u0627\u06cc\u062c\u0627\u062f \u0645\u0634\u062a\u0631\u06cc\u00bb \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u062f\u0647\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"kt\">var<\/span> <span class=\"n\">customer<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Customer<\/span><span class=\"p\">.<\/span><span class=\"nf\">Create<\/span><span class=\"p\">(<\/span>\n    <span class=\"n\">firstName<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">FirstName<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">FirstName<\/span><span class=\"p\">),<\/span>\n    <span class=\"n\">lastName<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">LastName<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">LastName<\/span><span class=\"p\">),<\/span>\n    <span class=\"n\">email<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">EmailAddress<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">Email<\/span><span class=\"p\">),<\/span>\n    <span class=\"n\">phoneNumber<\/span><span class=\"p\">:<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">PhoneNumber<\/span><span class=\"p\">(<\/span><span class=\"n\">request<\/span><span class=\"p\">.<\/span><span class=\"n\">PhoneNumber<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">);<\/span>\n\n<span class=\"k\">await<\/span> <span class=\"n\">customerRepository<\/span><span class=\"p\">.<\/span><span class=\"nf\">AddAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">customer<\/span><span class=\"p\">,<\/span> <span class=\"n\">cancellationToken<\/span><span class=\"p\">);<\/span>\n<span class=\"k\">await<\/span> <span class=\"n\">unitOfWork<\/span><span class=\"p\">.<\/span><span class=\"nf\">SaveChangesAsync<\/span><span class=\"p\">(<\/span><span class=\"n\">cancellationToken<\/span><span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0648 \u0646\u0642\u0634\u0647 \u0628\u0631\u062f\u0627\u0631\u06cc \u0645\u0639\u06a9\u0648\u0633 \u0628\u0647 <code>CustomerResponse<\/code> \u0627\u0632 \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">internal<\/span> <span class=\"k\">static<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">MappingExtensions<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"n\">CustomerResponse<\/span> <span class=\"nf\">MapToResponse<\/span><span class=\"p\">(<\/span><span class=\"k\">this<\/span> <span class=\"n\">Customer<\/span> <span class=\"n\">customer<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">CustomerResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">CustomerId<\/span><span class=\"p\">:<\/span> <span class=\"n\">customer<\/span><span class=\"p\">.<\/span><span class=\"n\">Id<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">FirstName<\/span><span class=\"p\">:<\/span> <span class=\"n\">customer<\/span><span class=\"p\">.<\/span><span class=\"n\">FirstName<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">LastName<\/span><span class=\"p\">:<\/span> <span class=\"n\">customer<\/span><span class=\"p\">.<\/span><span class=\"n\">LastName<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">Email<\/span><span class=\"p\">:<\/span> <span class=\"n\">customer<\/span><span class=\"p\">.<\/span><span class=\"n\">Email<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">PhoneNumber<\/span><span class=\"p\">:<\/span> <span class=\"n\">customer<\/span><span class=\"p\">.<\/span><span class=\"n\">PhoneNumber<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span>\n        <span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u06af\u0631 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0628\u0627 \u0627\u0634\u06a9\u0627\u0644\u0627\u062a\u06cc \u062f\u0631 \u06a9\u062f \u062e\u0648\u062f \u0645\u0648\u0627\u062c\u0647 \u0634\u062f\u0647 \u0627\u06cc\u062f \u06a9\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0647 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 (\u06cc\u0627 \u0647\u0631 \u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631\u06cc) \u0631\u0633\u06cc\u062f\u0647 \u0627\u0633\u062a &#8211; \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0627\u0632 Value Objects \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<br \/>\u0633\u0648\u0627\u0628\u0642 \u0633\u06cc \u0634\u0627\u0631\u067e \u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u0631\u06a9\u0648\u0631\u062f \u0641\u0642\u0637 \u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0631\u0627\u0647\u06cc \u0632\u06cc\u0628\u0627\u060c \u0622\u0633\u0627\u0646 \u0648 \u0633\u0631\u06cc\u0639 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0634\u06cc\u0627\u0621 \u0627\u0631\u0632\u0634 \u0628\u062f\u0648\u0646 \u06a9\u062f \u062f\u06cc\u06af \u0628\u062e\u0627\u0631 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.<\/p>\n<blockquote>\n<p><strong><em>\u062f\u0631 \u0648\u0628 \u0633\u0627\u06cc\u062a \u0645\u0646: antondevtips.com \u0645\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u06cc\u0648\u0647 \u0647\u0627\u06cc \u062f\u0627\u062a \u0646\u062a \u0648 \u0645\u0639\u0645\u0627\u0631\u06cc \u0631\u0627 \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0645\u06cc \u06af\u0630\u0627\u0631\u0645.<\/em><\/strong><br \/><strong><em>\u0628\u0631\u0627\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0647\u062a\u0631 \u0645\u0634\u062a\u0631\u06a9 \u0634\u0648\u06cc\u062f.<\/em><\/strong><br \/><strong><em>\u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0631\u0627\u06cc\u06af\u0627\u0646 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f.<\/em><\/strong><\/p>\n<\/blockquote><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0648\u0633\u0648\u0627\u0633 \u0628\u062f\u0648\u06cc \u062a\u0645\u0627\u06cc\u0644 \u0628\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0646\u0648\u0627\u0639 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0627\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0645\u0641\u0627\u0647\u06cc\u0645 \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u0627\u0633\u062a.\u0627\u06cc\u0646 \u06cc\u06a9 \u0636\u062f \u0627\u0644\u06af\u0648\u06cc \u0631\u0627\u06cc\u062c \u0627\u0633\u062a \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u06a9\u062f \u0646\u0627\u0645\u0634\u062e\u0635 \u0648 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627\u06cc \u0633\u062e\u062a\u200c\u062a\u0631 \u0628\u0631\u0627\u06cc \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0633\u062a \u0648\u0628\u0644\u0627\u06af\u060c \u0628\u0647 \u0634\u0645\u0627 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0648\u0633\u0648\u0627\u0633 \u0627\u0648\u0644\u06cc\u0647 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":77044,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-77043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/77043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=77043"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/77043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/77044"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=77043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=77043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=77043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}