Пользовательский конструктор LINQtoSQL от частичного класса? - PullRequest
1 голос
/ 15 апреля 2010

Я читаю этот вопрос здесь:

Есть ли способ переопределить пустой конструктор в классе, созданном LINQtoSQL?

Обычно мой конструктор будет выглядеть так:

 public User(String username, String password, String email, DateTime birthday, Char gender)
    {
        this.Id = Guid.NewGuid();
        this.DateCreated = this.DateModified = DateTime.Now;
        this.Username = username;
        this.Password = password;
        this.Email = email;
        this.Birthday = birthday;
        this.Gender = gender;
    }

Однако, как читается в этом вопросе, вы хотите вместо этого использовать частичный метод OnCreated (), чтобы присваивать значения, а не переписывать конструктор по умолчанию. Итак, я получил это:

partial void OnCreated()
{       
        this.Id = Guid.NewGuid();
        this.DateCreated = this.DateModified = DateTime.Now;
        this.Username = username;
        this.Password = password;
        this.Email = email;
        this.Birthday = birthday;
        this.Gender = gender;
}

Однако это дает мне две ошибки:

Partial Methods must be declared private.
Partial Methods must have empty method bodies.

Хорошо, я изменяю его на Private Sub OnCreated(), чтобы удалить обе эти ошибки. Однако я все еще застрял с ... как я могу передать его значения, как я бы с обычным конструктором? Также я делаю это в VB (преобразовал его, так как я знаю, что большинство знает / предпочитает C #), так что это повлияет на это?

Ответы [ 2 ]

1 голос
/ 16 апреля 2010

Вы не можете передавать значения в OnCreated. Вопрос, на который вы ссылаетесь, касается переопределения поведения конструктора по умолчанию. Похоже, вы хотите использовать параметризованный конструктор, например так:

Public Sub New(username as String, password as String, email as String, birthday as DateTime, gender as Char)
  User.New()

  Me.Id = Guid.NewGuid()
  Me.DateCreated = this.DateModified = DateTime.Now
  Me.Username = username
  Me.Password = password
  Me.Email = email
  Me.Birthday = birthday
  Me.Gender = gender
End Sub

Хотите ли вы создавать новых пользователей, таких как:

 Dim u as User = new User()

или как это:

 Dim u as User = new User("Name", "Password", "Email", etc)
0 голосов
/ 16 апреля 2010

При использовании VB вы не должны отмечать реализацию как Partial, а просто как Private. Посмотрите на следующий пример:

Private Sub OnCreated()
    ' Your code here'
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...