私はいくつかのCodeWarning(ConstructorsShouldNotCallBaseClassVirtualMethods)について疑問に思っていました。私はシンプルなログコレクタークラスを持っており、私はいくつかのオブジェクトを取得するためにNHibernateを使用しています。Nhibernate - リストを初期化する - ベストプラクティス?
私は自分でオブジェクトを作成して、それをHibernateに永続化するために追加します。 リストがNULLでないことを確認する最良の方法は何ですか。
現在、私はこれをやっていますが、「完璧」ではありません。この話題に関するアイデアは?
public class LogRun
{
public virtual int Id { get; private set; }
public virtual DateTime StartTime { get; set; }
public virtual DateTime EndTime { get; set; }
public virtual IList<Log> LogMessages { get; set; }
public virtual int LogMessageCount { get { return LogMessages.Count; } }
public LogRun()
{
LogMessages = new List<Log>();
}
}
ようになります。さらに、通常は、addメソッドで親への参照を設定する必要があります。つまり、logMessages.Add(log); log.LogRun = this; –
私はさらに一歩進んで、私のゲッターを読み取り専用のバージョンに戻します... return logMessages.ToList().AsReadOnly(); –
Webjedi
Jamie井出:それは、親を持つ1つの多くの場合、そのヘルパーはそれを設定するのに最適な場所です。それが多対多であれば、親はありません。ここの文脈では分かりませんが、あなたが正しいと大いに疑うでしょう。 Webjedi、あなたのアプローチも気に入っています。それが私がEnumerableで終わった理由です。私の場合、それは私がコレクションでやりたかったことすべてを満足させました。 – Ben