I read this question here:
Is there a way to override the empty constructor in a class generated by LINQtoSQL?
Typically my constructor would look like:
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;
}
However, as read in that question, you want to use partial method OnCreated() instead to assign values and not overwrite the default constructor. Okay so I got this :
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;
}
However, this gives me two errors:
Partial Methods must be declared private.
Partial Methods must have empty method bodies.
Alright I change it to Private Sub OnCreated()
to remove both of those errors. However I am still stuck with...how can I pass it values as I would with a normal custom constructor?
Also I am doing this in VB (converted it since I know most know/prefer C#), so would that have an affect on this?
You can't pass values into OnCreated
. The question you linked to is concerned with overriding the the behavour of the default constructor. It sounds like you want to use a parameterised constructor like this:
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
Do you want to create new users like this:
Dim u as User = new User()
or like this:
Dim u as User = new User("Name", "Password", "Email", etc)