TypeMerger 2.1.4
dotnet add package TypeMerger --version 2.1.4
NuGet\Install-Package TypeMerger -Version 2.1.4
<PackageReference Include="TypeMerger" Version="2.1.4" />
<PackageVersion Include="TypeMerger" Version="2.1.4" />
<PackageReference Include="TypeMerger" />
paket add TypeMerger --version 2.1.4
#r "nuget: TypeMerger, 2.1.4"
#:package TypeMerger@2.1.4
#addin nuget:?package=TypeMerger&version=2.1.4
#tool nuget:?package=TypeMerger&version=2.1.4
TypeMerger - Merge two objects into one
TypeMerger is a simple convention-based object merger for .NET Core. It allows two objects of any type to be merged into a new Type. Object properties can be ignored and any collisions can be resolved using a fluent api. The object returned is a new Type that is dynamically generated and loaded using System.Reflection.Emit.
Dependencies
None
How is it used?
Simple usage
This will result in a new object that has All the properties from obj1 and obj2.
var result = TypeMerger.Merge(obj1, obj2);
Ignore Certain Properties
This will result in a new object that has all of the properties from Obj1 and Obj2 Except for SomeProperty from obj1 and AnotherProperty from obj2.
var result = TypeMerger.Ignore(() => obj1.SomeProperty)
.Ignore(() => obj2.AnotherProperty)
.Merge(obj1, obj2);
What About Collisions?
If both objects have the same property there is a fluent method that will tell the Merger which object to use for that property. You simply tell the Merger which property to Use.
In this example given obj1 and obj2 that both have SomeProperty, the value from obj2 will be used.
var result = TypeMerger.Use(() => obj2.SomeProperty)
.Merge(obj1, obj2);
What about collisions which Use hasn't specified which object's property to use?
If both objects have the same property, and you do not specify which one to Use, then the property from the first object passed to Merge will be used. (Look at the Merge_Types_with_Name_Collision unit test for an example.)
Mix & Match Your Merge
Combining the .Ignore and .Use fluent methods allows you to pick and choose what you want from your objects.
var obj1 = new {
SomeProperty = "foo",
SomeAmount = 20,
AnotherProperty = "yo"
};
var obj2 = new {
SomeProperty = "bar",
SomePrivateStuff = "SECRET!!",
SomeOtherProperty = "more stuff"
};
var result = TypeMerger.Ignore(() => obj1.AnotherProperty)
.Use(() => obj2.SomeProperty)
.Ignore(() => obj2.SomePrivateStuff)
.Merge(obj1, obj2);
The result object will have the following properties and values:
SomeProperty: "bar"
SomeAmount: 20
SomeOtherProperty: "more stuff"
History
The code is based on the original TypeMerger class written by Mark Miller. Updated, enhanced, and now maintained by Kyle Finley.
Original posting: KyleFinley.net/typemerger
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| .NET Framework | net472 is compatible. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.7.2
- No dependencies.
-
.NETFramework 4.8
- No dependencies.
-
.NETStandard 2.1
- No dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on TypeMerger:
| Package | Downloads |
|---|---|
|
OuroborosAI.Core
Powerful layer on top of OpenAI supporting chaining and recursion scenarios. Includes fluent SDK for chaining, templates, and text processing. Still very early and .NET 9 only; Docs and broader support to follow. |
|
|
AspNetCore.InertiaCore
Inertia.js ASP.NET Adapter. https://inertiajs.com/ |
|
|
InertiaCorePreview
Inertia.js ASP.NET Adapter. https://inertiajs.com/ |
|
|
Spark.InertiaJs
Inertia.js ASP.NET Adapter. https://inertiajs.com/ |
|
|
InertiaJS.InertiaCore
Inertia.js ASP.NET Adapter. https://inertiajs.com/ |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on TypeMerger:
| Repository | Stars |
|---|---|
|
kapi2289/InertiaCore
Inertia.js ASP.NET Adapter.
|