Iciclecreek.ObjectPath 1.0.0

dotnet add package Iciclecreek.ObjectPath --version 1.0.0                
NuGet\Install-Package Iciclecreek.ObjectPath -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Iciclecreek.ObjectPath" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Iciclecreek.ObjectPath --version 1.0.0                
#r "nuget: Iciclecreek.ObjectPath, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Iciclecreek.ObjectPath as a Cake Addin
#addin nuget:?package=Iciclecreek.ObjectPath&version=1.0.0

// Install Iciclecreek.ObjectPath as a Cake Tool
#tool nuget:?package=Iciclecreek.ObjectPath&version=1.0.0                

ObjectPath

ObjectPath is a utility class which allows you to retreive/set object path properties on dynamic and typed objects.

Paths

Let's say you have an object, it could be a typed object, or dynamic object or even a dictionary.

ObjectPath allows you to dynamically navigate the object hierachy using a string path expression.

For example:

if (ObjectPath.TryGetValue<int>("x.y.z", out var val))
{
   // use val is a int
}

Methods

Methods Description
HasValue(obj, path) returns true if the path can be evaluated against obj
GetPathValue<T>(obj, path) returns the result of evaluating path as T if it exists, or throws if the path doesn't
TryGetValueValue<T>(obj, path, out T) retruns the result of valuating the path if it exists
SetPathValue(obj, path, val) sets the path to a given value
RemovePathValue(obj, path) removes the leaf of path (for dynamic objects) or resets it to default for typed objects
GetProperties(obj) enumerates public properties for objects/dictionaries/dynamic objects
ForEachProperty(obj, action) calls action with each public properties for objects/dictionaries/dynamic objects
ContainsProperty(obj, prop) shallow inspection to see if current object has a property/value named prop
Clone<T>(obj) creates a deep clone of public properties and all of it's children
Merge<T>(startObj, overlayObj) creates a new object which is clone of startObj with any properties defined on overlayObj merged over it
Assign<T>(startObj, overlayObj) creates a new object which is clone of startObj with any properties defined on overlayObj merged over it
MapValueTo<T>(obj) coercices an object to a given type.

Examples

  var dyn = new { X = 13, Y = new {Z = "15" } };

  ObjectPath.GetPathValue(dyn, "X"); ==> 13
  ObjectPath.GetPathValue(dyn, "X.Y.Z"); ==> "15"
  ObjectPath.GetPathValue<int>(dyn, "X.Y.Z"); ==> 15
  ObjectPath.HasPathValue(dyn, "X.Y") ==> true
  ObjectPath.HasPathValue(dyn, "X.FOO") ==> false
  
  // you can set path values without having to check sub parts, it will use JTokens to build the path.
  ObjectPath.SetPathValue(dyn, "X.FOO.Zoo", "hello");
  
  ObjectPath.HasPathValue(dyn, "X.FOO") ==> true
  ObjectPath.GetPathValue(dyn, "X.FOO.Zoo") ==> "hello"
  etc
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.0 91 9/8/2024