You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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",outvarval)){// 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
vardyn=new{X=13,Y=new{Z="15"}};ObjectPath.GetPathValue(dyn,"X");==>13ObjectPath.GetPathValue(dyn,"X.Y.Z");==>"15"ObjectPath.GetPathValue<int>(dyn,"X.Y.Z");==>15ObjectPath.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
About
ObjectPath is a utility class which allows you to retreive/set object path properties on dynamic and typed objects.