答えが本当に簡単なはずの状況に遭遇しましたが、それは私を逃してしまいます。
public class Note
{
#region Properties
public int Id { get; set; }
public int ClientId { get; set; }
public int CandidateId { get; set; }
public int TypeId { get; set; }
public DateTime DateCreated { get; set; }
public string UserId { get; set; }
public string UserName { get; set; }
public string Message { get; set; }
#endregion
#region Methods
public void Save()
{
}
#endregion
}
public class History : Note
{
}
ご覧のとおり、History は Note を継承しています。これらはまったく同じです。2 つの違いはタイプ ID だけです。
データベースからデータを取得するときにこの機能があります
public static Note Parse(SqlDataReader dr)
{
int TypeId = Convert.ToInt32(dr["TypeId"]);
Note Note;
if (TypeId == 1)
Note = new Note();
else
Note = new History();
Note.Id = Convert.ToInt32(dr["Id"]);
Note.TypeId = TypeId;
if (dr["ClientId"] != DBNull.Value) Note.ClientId = Convert.ToInt32(dr["ClientId"]);
if (dr["CandidateId"] != DBNull.Value) Note.CandidateId = Convert.ToInt32(dr["CandidateId"]);
Note.DateCreated = Convert.ToDateTime(dr["DateCreated"]);
Note.UserId = Convert.ToString(dr["UserId"]);
Note.UserName = Convert.ToString(dr["UserName"]);
Note.Message = Convert.ToString(dr["Message"]);
return Note;
}
そして、私のMVCページにはこれがあります:
<ol id="interview-comments">
@foreach (Note Note in Model.Notes().OfType<Note>())
{
}
</ol>
<ol id="history-comments">
@foreach (History Note in Model.Notes().OfType<History>())
{
}
</ol>
私の質問は簡単です。これは正しい方法ですか?
/r3plica