0

これは、NHibernateを使用してマッピングできる「簡略化された」クラスです。

public class Template
{
  public virtual int Id { get; private set; }
  public virtual string Name { get; set; }
}

IDフィールドにはプライベートセッターがあるため、IDフィールドを手動で設定するアプリケーションではこのようなコードを使用できなくなりました。

var DefaultTemplate = new Template { ID = (int)TemplateEnum.Default, Name = "Default" }

ここでは、何にでも割り当てることができるDefaultTemplateオブジェクトを手動で作成しています。その他のテンプレートは、ユーザーが手動で作成し、データベースに保存します。

この種の機能をどのように実現できるかについてのアイデアはありますか?

注意:C#Winforms、.NET 3.5であり、これにReflectionを使用したくありません。

4

2 に答える 2

1

可能であれば、次のようにします。

public class Template
{
  public virtual int Id { get; private set; }
  public virtual string Name { get; set; }

  public static readonly Template Default = new Template() {ID = (int)TemplateEnum.Default, Name = "Default"};
}

次に、Template クラスの外部からインスタンス化することなく、いつでも既定のテンプレートを「取得」できます。

Template t = Template.Default;
于 2010-12-21T13:01:20.270 に答える
0

private の代わりに protected を使用します。

編集:待ってください、私はあなたの質問を読み逃しました。設定できるように公開したいですか?

なぜ手動で値を割り当てたいのですか?

Id を取るコンストラクターを使用できます。次に、次のようにします。

var DefaultTemplate = new Template((int)TemplateEnum.Default) { Name = "Default" }

それでも、それはパブリックまたはリフレクションのいずれかです。なぜ手動で値を設定する必要があるのですか?

于 2010-12-21T12:35:37.363 に答える