using System;
namespace ShwasherSys.ReflectionMagic
{
///
/// Defines an mechanism to access members (e.g. fields or properties) of objects in a consistent way.
///
public interface IProperty
{
///
/// Gets the name of the property.
///
string Name { get; }
///
/// Gets the type of the property.
///
Type PropertyType { get; }
///
/// Returns the property value of a specified object with optional index values for indexed properties.
///
/// The object whose property value will be returned.
/// Optional index values for indexed properties. The indexes of indexed properties are zero-based. This value should be null for non-indexed properties.
/// The member value of the specified object.
object GetValue(object obj, object[] index);
///
/// Sets the property value of a specified object with optional index values for index properties.
///
/// The object whose property value will be set.
/// The new property value.
/// Optional index values for indexed properties. This value should be null for non-indexed properties.
void SetValue(object obj, object value, object[] index);
}
}