実際のソフトウェア開発プロジェクトでは、多くの場合、「ビジネス ロジック」により、同じデータに対してさまざまな変換を実行する必要があります。たとえば、Web アプリケーションはフロントエンドを通じてユーザー入力を Dto に収集し、Dto をドメイン モデルに変換してデータベースに保存します。一方、ユーザーがデータを要求した場合は、その逆のことを行う必要があります。つまり、データベースからクエリされたドメイン モデルを逆の方法で Dto に変換し、ユーザーに提示する必要があります。場合によっては、複数のクライアントがデータを使用するなど、より多くのデータ使用要件に直面することもあります。そのため、より多くのデータ変換を実行する必要もあります。
頻繁なデータ変換は些細で面倒な作業です:
(1) 2 つのタイプは名前が異なるだけですが、ほぼ同様の構造を持っています。ただし、タイプ間のデータ転送は、属性 1 を手動で割り当てることによってのみ実現できます。 「伝達」によって。
(2) 新しいデータ変換シナリオが発生するたびに、一連の変換ロジックが手動で実装され、その結果、データ変換操作が繰り返され、アプリケーションの隅々に分散されます。
「オレンジ」を私たちが望む「リンゴ」に変えることができるそのような「トランスフォーマー」のようなツールがある場合、私たちがしなければならないことは、変換ルールを定義することだけです - 実際のビジネスロジックを実行するか、または単純なシナリオで実行するだけですルールを定義する必要はありません (設定よりも規約)、これは非常に美しいことです。実際、強力なオブジェクト間マッピング ツールである AutoMapper があるため、.NET で車輪を再発明する必要はありません。
実際、私が取り組んでいるプロジェクトは上記の「混乱」を経験しているのですが、AutoMapper は本当に明るい気持ちをもたらしてくれます。そこで、週末のちょっとした休暇を利用して AutoMapper を試してみたところ、小さなアプリケーション シナリオを通じて Dto とドメイン モデルのマッピングを実現し、その「強力なオーラ」を実感しました。同じように混乱しているあなたの助けになればと思い、この記事で私の使用経験を共有します。完全なプロジェクト コードは後で私の git リポジトリにリリースしますので、どなたでも自由に参照していただけます。
【1】アプリケーションシナリオの説明
まず、「仮想」ドメインモデルを見てみましょう。今回は本屋 (BookStore) を定義しました:
パブリック アドレス アドレス {get; set;} }
書店には独自のアドレス (アドレス) があります:
C# コード public クラス Address
{
public string City { get; }
public string PostCode { get; }書店で:
C# コード
{
パブリック文字列 説明 { 取得; }
public 10 進数 { get; set; }
public DateTime { get; set; public int { get; set;
}
各書籍には出版社情報があります:
}
各書籍には最大 2 つの著者情報 (著者) を含めることができます:C# コード
public class Author
{
public string Name { get; set;
public string description { get; set; }
public ContactInfo ContactInfo { get; }
}
C# コード
Dto 構造をもう一度見てみましょう。
Dto には BookStore に対応する BookStoreDto があります: public class BookStoreDto { public Listpublic string PostCode { get; }
C# コード
パブリッククラス BookDto
{
パブリック文字列 { 取得; セット; }
パブリック 10 進数
public DateTime { get; set; }
public string FirstAuthorName { get; } FirstAuthorDescription { 取得; }
パブリック文字列 FirstAuthorBlog { 取得; }
パブリック文字列 SecondAuthorDescription { 取得; }
パブリック文字列 SecondAuthorTwitter { 取得; }
Dto から Model へのマッピング ルールを見てみましょう。
(1) BookStoreDto -> BookStore のフィールドBookStoreDto フィールド
Name Name
Books Books
Address Address
(2)AddressDto -> Address
フィールド住所のDtoフィールド
国
都市
都市
通り
郵便番号
(3) BookDto -> Book。
BookDto の一部の基本フィールドは Book のフィールドに直接対応できます。
Book のフィールドDto Book のフィールド
Title タイトル
Description 説明
Language 言語
Price 価格
Pub lishDate PublishDate
Paperback ペーパーバック
各書籍には次の場所がありますBookDto の著者のほとんど 2 名 フィールドで表されるそれぞれ「First」と「Second」という接頭辞が付きます。したがって、すべての FirstXXX フィールドは Book の Authors の最初の Author オブジェクトにマップされ、すべての SecondXXX フィールドは Authors の 2 番目の Author オブジェクトにマップされます。
BookDto のフィールド BookDto の著者の 1st Author オブジェクトのフィールド
FirstAuthorName 名前
FirstAuthorDescription 説明
FirstAuthorEmail ContactInfo.Email
FirstAuthorBlog ContactInfo.Blog
FirstAuthorTwitter ContactInfo.Twitter
ContactInfo.Email に注意してください上の表の は、Author オブジェクトの ContactInfo に対応する Email フィールドを表します。同様に、次のようになります。
BookDto のフィールド Authors in Book の 2 番目の Author オブジェクトのフィールド
SecondAuthorName Name
SecondAuthorDescription 説明
SecondAuthorEmail ContactIn fo.Email
SecondAuthorBlog ContactInfo.Blog
SecondAuthorTwitter連絡先情報 .Twitter
最後に、Publisher フィールドがあります。これは、独立した Publisher オブジェクトに対応します。
出版社の BookDto フィールド
出版社名
必要なのは、この大きな Dto から別の大きなモデルにデータを変換することです。

C#と.NETの関係は切り離せませんが、同じものではありません。 C#はプログラミング言語であり、.NETは開発プラットフォームです。 C#は、コードの書き込み、.NETの中間言語(IL)にコンパイルされ、.NET Runtime(CLR)によって実行されるために使用されます。

C#.NETは、複数のアプリケーション開発をサポートする強力なツールとライブラリを提供するため、依然として重要です。 1)C#は.NETフレームワークを組み合わせて、開発を効率的かつ便利にします。 2)C#のタイプの安全性とゴミ収集メカニズムは、その利点を高めます。 3).NETは、クロスプラットフォームの実行環境とリッチAPIを提供し、開発の柔軟性を向上させます。

c#.netisversatileforbothwebanddesktopdevelopment.1)forweb、useasp.netfordynamicapplications.2)fordesktop、equindowsorwpfforrichinterfaces.3)usexamarinforcross-platformdeveliment、enabling deshacrosswindows、

C#と.NETは、継続的な更新と最適化を通じて、新しいテクノロジーのニーズに適応します。 1)C#9.0および.NET5は、レコードタイプとパフォーマンスの最適化を導入します。 2).Netcoreは、クラウドネイティブおよびコンテナ化されたサポートを強化します。 3)ASP.Netcoreは、最新のWebテクノロジーと統合されています。 4)ML.NETは、機械学習と人工知能をサポートしています。 5)非同期プログラミングとベストプラクティスはパフォーマンスを改善します。

c#.netissuitableforenterprise-levelApplicationsとsystemduetoitsSystemdutyping、richlibraries、androbustperformance.

.NETでのC#のプログラミングプロセスには、次の手順が含まれます。1)C#コードの作成、2)中間言語(IL)にコンパイルし、3).NETランタイム(CLR)によって実行される。 .NETのC#の利点は、デスクトップアプリケーションからWebサービスまでのさまざまな開発シナリオに適した、最新の構文、強力なタイプシステム、および.NETフレームワークとの緊密な統合です。

C#は、Microsoftによって開発された最新のオブジェクト指向プログラミング言語であり、.NETフレームワークの一部として開発されています。 1.C#は、カプセル化、継承、多型を含むオブジェクト指向プログラミング(OOP)をサポートしています。 2。C#の非同期プログラミングは非同期を通じて実装され、適用応答性を向上させるためにキーワードを待ちます。 3. LINQを使用してデータ収集を簡潔に処理します。 4.一般的なエラーには、null参照の例外と、範囲外の例外インデックスが含まれます。デバッグスキルには、デバッガーと例外処理の使用が含まれます。 5.パフォーマンスの最適化には、StringBuilderの使用と、不必要な梱包とボクシングの回避が含まれます。

C#.NETアプリケーションのテスト戦略には、ユニットテスト、統合テスト、エンドツーエンドテストが含まれます。 1.単位テストにより、コードの最小ユニットがMSTEST、ヌニット、またはXUNITフレームワークを使用して独立して動作することを保証します。 2。統合テストでは、一般的に使用されるシミュレートされたデータと外部サービスを組み合わせた複数のユニットの機能を検証します。 3.エンドツーエンドのテストでは、ユーザーの完全な操作プロセスをシミュレートし、通常、セレンは自動テストに使用されます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
