Description
The ObjectReader class allows you to examine the properties of an object (property instrospection) and to dynamically read them.
Important points
- In contrast to PropertyReflector which only introspects regular objects, this ObjectReader is also able to handle maps and arrays.
- For maps, properties are key-pairs identified by string keys.
- For arrays, properties are elements identified by integer index.
- This class has a symmetric implementation across all languages supported by the Pip.Services toolkit and is used to support dynamic data processing.
- Because all languages have different casing and case sensitivity rules, this ObjectReader treats all property names as case insensitive.
Static methods
GetProperties
Get the values of all properties in a specified object and returns them as a map.
The object can be a user defined object, map or array. Returned properties correspondently are object properties, map key-pairs or array elements with their indexes.
public static
Dictionary<string, object> GetProperties(object obj)
- obj: object - object to get properties from.
- returns: Dictionary<string, object> - map containing the names of the object’s properties and their values.
GetProperty
Gets the value of an object’s property specified by its name.
The object can be a user defined object, map or array. The property name correspondently must be and object property, map key or array index.
public static
object GetProperty(object obj, string name)
- obj: object - object to read the property from.
- name: string - name of the property to get.
- returns: object - property value or null if the property doesn’t exist or introspection failed.
GetPropertyNames
Gets the names of all properties implemented in a specified object.
The object can be a user defined object, map or array. Returned property name correspondently are object properties, map keys or array indexes.
public static
List<string> GetPropertyNames(object obj)
- obj: object - objec to introspect.
- returns: List<string> - list with property names.
GetValue
Gets a real object value. If the object is a wrapper, it unwraps the value behind it. Otherwise, it returns the same object’s value.
public static
object GetValue(object obj)
- obj: object - object to unwrap..
- returns: object - actual (unwrapped) object’s value.
HasProperty
Checks if an object has a property with the specified name.
The object can be a user defined object, map or array. The property name correspondently must be an object property, a map key or an array index.
public static
bool HasProperty(object obj, string name)
- obj: object - object to introspect.
- name: string - name of the property to check.
- returns: bool - true if the object has the property and false if it doesn’t.
Examples
var myObj = new MyObject();
var properties = ObjectReader.GetPropertyNames();
ObjectReader.HasProperty(myObj, "myProperty");
var value = PropertyReflector.GetProperty(myObj, "myProperty");
var myMap = new Dictionary<string, object>(){
{"key1", 123},
{"key2", "ABC"};
};
ObjectReader.HasProperty(myMap, "key1");
var value = ObjectReader.getProperty(myMap, "key1");
int[] myArray = new int[] { 1, 2, 3 };
ObjectReader.HasProperty(myArrat, "0");
var value = ObjectReader.GetProperty(myArray, "0");