A simple utility class that allows traversing over C# object properties, Node.js style
$ dotnet add package ObjectTreeWalkerObjectGraphWalker is a powerful utility library that enables seamless traversal over C# object properties and fields, Node.js style. Designed with performance and flexibility in mind, it leverages dynamic code generation and caching to provide efficient traversal capabilities.
Simply install the NuGet Package
A basic example that demonstrates how to traverse an object and access its properties:
var someObject = new SomeObject();
var iterator = new ObjectMemberIterator();
iterator.Traverse(someObject, (in MemberAccessor accessor) =>
{
var propertyValue = accessor.GetValue();
prop.SetValue(/* some other value */);
});
An advanced example that shows how to use predicates to filter members and control the traversal behavior:
var someObject = new SomeObject();
var iterator = new ObjectMemberIterator();
iterator.Traverse(someObject, (in MemberAccessor accessor) =>
{
var propertyValue = accessor.GetValue();
prop.SetValue(/* some other value */);
//filtering for selective iteration is a simple lambda
}, (in MemberAccessor accessor) => accessor.Name != "Foo1" && accessor.MemberType != MemberType.Property);
Any contributions are welcome :)