9

データベースに 'Users' というテーブルがある場合、LINQtoSQL によって生成された 'User' というクラスがあり、既に宣言されている空のコンストラクターがあります。

このコンストラクターをオーバーライドして独自のロジックを追加する場合のベスト プラクティスは何ですか?

4

4 に答える 4

11

O/R-Designer によって生成されるデフォルトのコンストラクターは、 - と呼ばれる部分関数を呼び出します。OnCreatedしたがって、ベスト プラクティスは、デフォルトのコンストラクターをオーバーライドするのではなく、アイテムを初期化するために部分関数OnCreatedを実装することです。MyDataClasses.cs

partial void OnCreated()
{
  Name = "";
}

他のコンストラクターを実装している場合は、クラスが適切に初期化されるように、常にデフォルトのコンストラクターを呼び出すように注意してください。たとえば、エンティティセット (関係) はデフォルトのコンストラクターで構築されます。

于 2008-09-17T14:30:45.990 に答える
3

空のコンストラクターをオーバーライドできるようには見えません。代わりに、空のコンストラクターで必要な機能を実行し、新しいオブジェクトを返すメソッドを作成します。

// Add new partial class to extend functionality
public partial class User {

  // Add additional constructor
  public User(int id) {
    ID = id;
  }

  // Add static method to initialize new object
  public User GetNewUser() {
    // functionality
    User user = new User();
    user.Name = "NewName";
    return user;
  }
}

次に、デフォルトの空のコンストラクターを使用する代わりに、コードの他の場所で次のいずれかを実行します。

User user1 = new User(1);
User user2 = User.GetNewUser();
于 2008-09-17T12:17:46.527 に答える