一個接口的世界, 包含了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.