Существует ли способ переопределить пустого конструктора в классе, сгенерированном LINQtoSQL?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

9
задан Eric Lennartsson 17 September 2008 в 12:11
поделиться

2 ответа

Конструктор по умолчанию, который сгенерирован O/R-Designer, вызывает частичную вызванную функцию OnCreated - таким образом, лучшая практика не должна переопределить конструктора по умолчанию, но вместо этого реализовать частичную функцию OnCreated в MyDataClasses.cs инициализировать объекты:

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

Если Вы реализуете других конструкторов, всегда заботитесь для вызова конструктора по умолчанию, таким образом, классы будут инициализированы правильно - например, entitysets (отношения) создаются в конструкторе по умолчанию.

11
ответ дан 4 December 2019 в 13:51
поделиться

Не похоже, что можно переопределить пустого конструктора. Вместо этого я создал бы метод, который выполняет функциональность, в которой Вы нуждаетесь в пустом конструкторе, и возвращает новый объект.

// 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();
3
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: