using System;
using System.Reflection;
namespace Swan.Reflection
{
///
/// Represents a generic interface to store getters and setters for high speed access to properties.
///
public interface IPropertyProxy
{
///
/// Gets the name of the property.
///
string Name { get; }
///
/// Gets the type of the property.
///
Type PropertyType { get; }
///
/// Gets the associated reflection property info.
///
PropertyInfo Property { get; }
///
/// Gets the type owning this property proxy.
///
Type EnclosingType { get; }
///
/// Gets the property value via a stored delegate.
///
/// The instance.
/// The property value.
object? GetValue(object instance);
///
/// Sets the property value via a stored delegate.
///
/// The instance.
/// The value.
void SetValue(object instance, object? value);
}
}