[英]Accessing Properties or a Parent Class from Base
我正在嘗試創建一個與數據庫交互的應用程序。
我用多種語言編程,我喜歡在基於MVC的應用程序中使用模型有多么容易。
所以我的問題是,嘗試復制此功能,我有2個類,如下所示:
基類:
public class BaseModel
{
protected string TableName { get; set; }
public BaseModel()
{
}
public void Save()
{
// Save data in derived class to table stored in TableName
}
}
派生類:
public class UserModel : BaseModel
{
public string Field1 { get; set; }
public string Field2 { get; set; }
public UserModel()
{
base.TableName = "user";
}
}
從我的主應用程序,我希望能夠執行以下操作:
public class Class1
{
public Class1()
{
UserModel model = new UserModel();
model.Field1 = "Value1";
model.Field2 = "Value2";
model.Save();
}
}
這是我遇到問題的地方。 我一輩子都無法弄清楚如何訪問UserModel中的屬性,以便可以將它們保存到UserModel到BaseModel的構造函數中指定的數據庫表中。
希望這有道理。 :)
這段代碼不是我的工作代碼,它只是我想要實現的目標的非常簡單的表示,因此為了便於閱讀,對字段和屬性(驗證器等)進行了簡化。
我認為,更“真實”的示例實際上有助於更好地理解,但是我認為您應該在基類中創建虛擬(甚至是抽象)方法,以將數據保存在數據庫中:
public class BaseModel {
protected virtual string GetDataToSaveInDB() {
// if it makes sense to have the data as a string...
}
public void Save() {
string data = GetDataToSaveInDB();
// do something with data...
}
}
然后,在派生類中返回數據:
public class UserModel : BaseModel {
protected override string GetDataToSaveInDB() {
return "Field1=" + Field1 + ";Field2=" + Field2;
}
}
這只是為了說明概念,如果您提供更多信息,將更容易提供真實的答案。
您如何將數據保存在數據庫中? 表格的結構如何?
通常,可以通過在基層使用抽象函數,然后在派生類中使用特定的抽象函數來覆蓋它們來解決此問題。 因此將在基礎中建立一個調用樹,但是需要知道派生類詳細信息的函數將在派生類中實現。
public class BaseModel
{
protected string TableName { get; set; }
public BaseModel()
{
}
public abstract void Save();
}
在這種情況下,如果在基類中有一個具體的數據表示形式,則最好創建一個DTO對象,以供您的業務類利用。 這是大多數框架(如實體)的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.