1
假設我有一個表,名爲用戶。使用LINQ desinger,我將結束與以下:通用Linq DataContext
- 一個名爲User.dbml
- 一個名爲UserDataContext數據上下文類的子類System.Data.Linq.DataContext
- 從User表映射的名爲User的類。 UserDataContext對象將具有名爲用戶的屬性,其類型爲System.Data.Linq.Table <用戶>。
到目前爲止好。現在我想定義一個通用基類,將Linq.Table屬性轉換爲所有子類的JSON字符串。因此,我將有:
using Newtonsoft.Json;
class BasePlugin<T> where T : System.Data.Linq.DataContext, new()
{
protected T DataContext = new T();
protected string GetJSONData()
{
//*** DataContext if of type System.Data.Linq.DataContext, therefore it won't know the Linq Table property of its subclasses
return JsonConvert.SerializeObject(DataContext.Cannot_get_subclass_property_Linq_table);
}
}
要完成該問題的代碼,這裏有一個子類的實例:
class UserPlugin : BasePlugin<UserDataContext>
{
//The protected member DataContext inherited from BasePlugin
//has a property called Users of type System.Data.Linq.Table<User>.
//The point to to avoid implementing GetJSONData() in all subclasses
}
總之,問題是如何避免在所有子類實現GetJSONData()讓基類去做。
這完全是我所追求的。它看起來像GetType()會導致編譯錯誤,而GetType()就足夠了,所以不需要第二個參數化參數TEntity? –
2010-06-23 20:26:57
@Khnle:你只需要一個TEntity的類約束。將更新代碼。您還需要調用GetTable,而不是GetType - 我的部分錯別字。 – 2010-06-23 20:49:53