【讨论】一个接口的世界
一个接口的世界, 包含了ORM的基础以及MVC的基础。
public interface IEntityProxy
{
/// <summary>
/// 获取实例对象的属性值
/// </summary>
/// <param name="entity">对象实例</param>
/// <param name="propertyName">属性名</param>
/// <returns>属性值</returns>
object GetPropertyValue(object entity, string propertyName);
/// <summary>
/// 设置实例对象的属性值
/// </summary>
/// <param name="entity">对象实例</param>
/// <param name="propertyName">属性名</param>
/// <param name="propertyValue">属性值</param>
void SetPropertyValue(object entity, string propertyName, object propertyValue);
/// <summary>
/// 动态调用方法。
/// </summary>
/// <param name="entity">对象实例</param>
/// <param name="methodName">方法名</param>
/// <param name="dataAdapter">参数名,参数值数据集</param>
/// <returns>返回值</returns>
object Invoke(object entity, string methodName, BeeDataAdapter dataAdapter);
{
/// <summary>
/// 获取实例对象的属性值
/// </summary>
/// <param name="entity">对象实例</param>
/// <param name="propertyName">属性名</param>
/// <returns>属性值</returns>
object GetPropertyValue(object entity, string propertyName);
/// <summary>
/// 设置实例对象的属性值
/// </summary>
/// <param name="entity">对象实例</param>
/// <param name="propertyName">属性名</param>
/// <param name="propertyValue">属性值</param>
void SetPropertyValue(object entity, string propertyName, object propertyValue);
/// <summary>
/// 动态调用方法。
/// </summary>
/// <param name="entity">对象实例</param>
/// <param name="methodName">方法名</param>
/// <param name="dataAdapter">参数名,参数值数据集</param>
/// <returns>返回值</returns>
object Invoke(object entity, string methodName, BeeDataAdapter dataAdapter);
}
欢迎大家讨论及实现该接口。
SetPropertyValue 这两个方法为实现ORM的基础。
Invoke 则为实现MVC的基础。
实现的方式有:1:Reflection; 2: Emit; 3:Expression Tree.