次のコードを使用して、変数の型で受け取る可能性のある 5 つの異なる型があると仮定します。5 つの条件ステートメントを記述する代わりに、1 つ記述し、変数「タイプ」を使用して、モデルが何であるか (この場合は「CommentVote」) を指示する方法はありますか? それとも、「投票」モデルを持つこれら5つのもののそれぞれでデータモデルを設計した方法の欠陥ですか?
if (type == "comment")
{
CommentVote voteObj = db.CommentVotes
.Where(x => x.UserID == UserID && x.CommentID == id)
.SingleOrDefault();
if (voteObj != null)
{
voteObj.Vote = vote;
db.SaveChanges();
}
else
{
CommentVote c = new CommentVote {
CommentID = id, UserID = UserID, Vote = vote, DateCreated = DateTime.Now
};
db.CommentVotes.Add(c);
db.SaveChanges();
}
count = (db.CommentVotes.Count(x => x.CommentID == id && x.Vote == true) - db.CommentVotes.Count(x => x.CommentID == id && x.Vote == false));
}
マジック コード:できるようになりたいと思っていること。
var modelName = "";
var modelOtherName = "";
if (type == "comment") {
modelName = CommentVote;
modelOtherName = CommentVotes;
}
modelName voteObj = db.modelOtherName
.Where(x => x.UserID == UserID && x.CommentID == id)
.SingleOrDefault();
更新:以下で参照されているいくつかの読書に基づいて、私のモデルががらくたである可能性があると考え始めています。ですので、参考程度に載せておきます。それが私が解決しようとしている問題かどうか教えてください。
public class CommentVote
{
public int CommentVoteID { get; set; }
public bool Vote { get; set; }
public DateTime DateCreated { get; set; }
public int UserID { get; set; }
public virtual User User { get; set; }
public int CommentID { get; set; } //This row changes from model to model
public virtual Comment Comment { get; set; } //This row changes from model to model
}
私はほとんど同じモデルをいくつか持っています。