C# での AutoMapper アプリケーションの例
私は最近、AutoMapper という興味深いものを発見しました。これは、主にモデルを DTO に変換します。DTO は、ドメイン オブジェクトの動作をプレゼンテーション層に過度に公開しないように、データにさらに注意を払い、ドメイン オブジェクトを合理的にカプセル化します。
まず、2 つのクラス間のマッピングの例をいくつか見てみましょう。
まず、Source と DTOSource の 2 つのクラスを定義します。
public class Source { public int Id { get; set; } public string Content { get; set; } } public class DTOSource { public int Id { get; set; } public string Content { get; set; } }
Source フィールドと DTOSource フィールドは、AutoMapper を通じてどのように変換されるかを見てみましょう。コードは非常に簡単です。
Mapper.Initialize(x=>{ x.CreateMap<Source,DTOSource>(); }); Source s = new Source{Id=1,Content="123"}; DTOSource dto = Mapper.Map<DTOSource>(s);
最初のステップは、Source インスタンスと DTOSource の間のマッピングを確立することです。Source インスタンスを初期化した後、実行結果を確認します。
実行が完了すると、dto とこれは、2 つのクラスのフィールド名がまったく同じである場合に当てはまります。では、DTOSource のフィールド名が Source のフィールド名と異なる場合はどうなるでしょうか。実際には非常に簡単です。
を少しコードに変更するだけです。
現時点では、マッピング関係を確立するときにフィールドを指定するだけです。
1 Mapper.Initialize(x => { 2 x.CreateMap<Source, DTOSource>().ForMember(c=>c.Desc,q=> { 3 q.MapFrom(z => z.Content); 4 }); 5 });
見てみましょう 実行結果を見てみましょう
結果が前の実行結果と同じであることがわかります。
つまり、2 つのリストをマップする方法は実際には非常に簡単で、最後のステップに少し変更が必要なだけです。次のコードに示すように:
Mapper.Initialize(x => { x.CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => { q.MapFrom(z => z.Content); }); }); s.Add(new Source { Id = 1, Content = "123" }); var dto = Mapper.Map<List<DTOSource>>(s);
コードの最後の文を除いて、他の部分はほぼ同じであることがわかりますが、コードの最後の文でターゲットの型が List
結果は期待どおりです。
実際のプロジェクトでは、この書き方は絶対に要件を満たしません。一般に、カプセル化は、Profile を継承する新しい SourceProfile を作成するために行われます。
1 public SourceProfile() 2 { 3 base.CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => { 4 q.MapFrom(z => z.Content); 5 }); 6 }
すべてのマッピング関係は、プログラム内でこのクラスに記述することができます。初期化中に一度呼び出すだけです:
1 Mapper.Initialize(x =>{ x.AddProfile<SourceProfile>(); });
ブロガーが使用している AutoMapper のバージョンは 6.1.1.0 です。AutoMapper はバージョン 6.0 で Configure を削除したため、バージョン 6.0 以前の記述方法とは少し異なります。バージョン 6.0 より前のバージョンは :
public class SourceProfile : Profile { protected override void Configure() { CreateMap<Source, DTOSource>().ForMember(c => c.Desc, q => { q.MapFrom(z => z.Content); }); } }
Profile を継承してその Configure を書き換えるだけで、呼び出し方法は上記とあまり変わりません。 Mapper.Initialize には 1 つ以上のプロファイルを追加できます。
MVC プロジェクトのアプリケーションでは、Mapper.Initialize をクラスにカプセル化できます
public static class AutoMapperForMvc { public static void Register() { Mapper.Initialize(x => { x.AddProfile<SourceProfile>(); }); } }
次に、それを MVC Global に一度登録します。
以上がC# での AutoMapper アプリケーションの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









現在、人工知能(AI)技術の開発は本格化しており、さまざまな分野で大きな可能性と影響力を発揮しています。本日、Dayao は、参考にしていただけるよう、4 つの .NET オープン ソース AI モデル LLM 関連プロジェクト フレームワークを共有します。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel は、OpenAI、Azure などの大規模言語モデル (LLM) を統合するように設計されたオープン ソース ソフトウェア開発キット (SDK) です。

.NET 開発者は、高品質のソフトウェアを提供するために機能とパフォーマンスを最適化することの重要性を認識する必要があります。提供されたリソースを巧みに活用し、Web サイトの読み込み時間を短縮することで、ユーザーに快適なエクスペリエンスを提供するだけでなく、インフラストラクチャのコストも削減できます。

同時実行性の高いリクエスト処理の点では、.NETASP.NETCoreWebAPI は JavaSpringMVC よりも優れたパフォーマンスを発揮します。その理由としては、AOT の早期コンパイルにより起動時間が短縮され、開発者がオブジェクト メモリの割り当てと解放を行うため、より洗練されたメモリ管理が行われます。

C#.NETインタビューの質問と回答には、基本的な知識、コアの概念、高度な使用が含まれます。 1)基本知識:C#は、Microsoftが開発したオブジェクト指向言語であり、主に.NETフレームワークで使用されています。 2)コアの概念:委任とイベントは動的な結合方法を可能にし、LINQは強力なクエリ関数を提供します。 3)高度な使用:非同期プログラミングは応答性を向上させ、式ツリーは動的コード構造に使用されます。

C#シニア開発者とのインタビューでは、非同期プログラミング、LINQ、.NETフレームワークの内部作業原則などのコア知識をマスターする必要があります。 1.非同期プログラミングは、非同期を通じて操作を簡素化し、アプリケーションの応答性を向上させるのを待ちます。 2.LinqはSQLスタイルでデータを操作し、パフォーマンスに注意を払います。 3.ネットフレームワークのCLRはメモリを管理し、ガベージコレクションに注意して使用する必要があります。

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

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