|
Mapsterは、オブジェクト間のマッピングをシンプルかつ強力に処理できるオープンソースの.NETオブジェクトマッピングライブラリです。この記事では、.NETでMapsterを使用する方法を詳しく説明し、いくつかの例とソースコードを紹介します。 他のフレームワークとのパフォーマンス比較: Mapsterのインストールと設定: - まず、Visual Studio を開いて新しい .NET プロジェクトを作成します。
- Mapster をインストールするには、NuGet パッケージ マネージャー コンソールで次のコマンドを実行します: Install-Package Mapster。
- プロジェクトにMappingConfig.csという新しいクラスファイルを追加します。このクラスはMapsterのマッピングルールの設定に使用されます。
マッピングルールを構成します。 MappingConfig.cs ファイルに次のコードを追加して、マッピング ルールを構成します。 using Mapster; public static class MappingConfig { public static void Configure() { TypeAdapterConfig.GlobalSettings.Default.NameMatchingStrategy(NameMatchingStrategy.Flexible); TypeAdapterConfig.GlobalSettings.Default.PreserveReference(true); // 添加映射规则TypeAdapterConfig<MySource, MyDestination>.NewConfig() .Map(dest => dest.DestinationProperty, src => src.SourceProperty) .Map(dest => dest.AnotherProperty, src => src.AnotherProperty); } } 上記のコードでは、まず Mapster のグローバル設定をいくつか設定します。 NameMatchingStrategy.Flexible は、プロパティ名の大文字と小文字が区別されないことを意味します。PreserveReference(true) は、参照関係が保持されることを意味します。 次に、`TypeAdapterConfig` クラスの `NewConfig` メソッドを使用して、新しいマッピングルールを作成します。この例では、`MySource` クラスを `MyDestination` クラスにマッピングします。`Map` メソッドを使用して、プロパティ間のマッピング関係を指定します。 オブジェクト マッピングに Mapster を使用する: マッピングルールを設定したら、コード内でMapsterを使用してオブジェクトをマッピングできます。簡単な例を以下に示します。 using Mapster; public class MySource { public string SourceProperty { get; set; } public string AnotherProperty { get; set; } } public class MyDestination { public string DestinationProperty { get; set; } public string AnotherProperty { get; set; } } public class Program { static void Main(string[] args) { // 配置映射规则MappingConfig.Configure(); // 创建源对象var source = new MySource { SourceProperty = "Hello", AnotherProperty = "World" }; // 执行映射var destination = source.Adapt<MyDestination>(); // 输出结果Console.WriteLine(destination.DestinationProperty); // 输出:Hello Console.WriteLine(destination.AnotherProperty); // 输出:World } } 上記の例では、まず`MappingConfig.Configure`メソッドを呼び出してマッピングルールを設定します。次に、ソースオブジェクト`source`を作成し、そのプロパティ値を設定します。次に、`Adapt`メソッドを使用して、ソースオブジェクトを宛先オブジェクトにマッピングします。最後に、宛先オブジェクトのプロパティにアクセスすることでマッピング結果を取得できます。 高度な使用法: Mapster は、より複雑なマッピングシナリオを処理するための高度な使用方法も提供します。 プロパティ マッピングを無視:マッピング処理中に特定のプロパティを無視したい場合があります。これは `Ignore` メソッドを使用することで実現できます。 TypeAdapterConfig<MySource, MyDestination>.NewConfig() .Ignore(dest => dest.DestinationProperty); カスタムプロパティマッピング: MapWith メソッドを使用して、プロパティ間のマッピング ロジックをカスタマイズできます。 TypeAdapterConfig<MySource, MyDestination>.NewConfig() .Map(dest => dest.DestinationProperty, src => src.SourceProperty.ToUpper()); マッピングを設定します: Mapsterはコレクション間のマッピングもサポートしています。例えば、複数のMySourceオブジェクトを含むリストがある場合、Adaptメソッドを使用して、それらを複数のMyDestinationオブジェクトを含むリストにマッピングできます。 var sourceList = new List<MySource> { new MySource { SourceProperty = "Hello", AnotherProperty = "World" }, new MySource { SourceProperty = "Foo", AnotherProperty = "Bar" } }; var destinationList = sourceList.Adapt<List<MyDestination>>(); ネストされたオブジェクトのマッピング:ソース オブジェクトとターゲット オブジェクトにネストされたオブジェクトが含まれている場合は、MapWith メソッドを使用してネストされたオブジェクトのマッピングを処理できます。 TypeAdapterConfig<MySource, MyDestination>.NewConfig() .Map(dest => dest.NestedObject, src => src.NestedObject.Adapt<NestedDestination>()); 上記は、オブジェクトマッピングにおけるMapsterのメソッド、手順、そして高度な活用方法の紹介です。Mapsterを使用することで、オブジェクト間のマッピングを簡単に処理し、必要に応じてカスタマイズや拡張を行うことができます。 |