NotImplementedException, но уже вызывает метод на C#

#c# #visual-studio #notimplementedexception

#c# #visual-studio #notimplementedexception

Вопрос:

Я хотел бы знать, почему NotImplementedException(); все еще появляется, хотя я почти уверен, что я вызвал метод?

это исключение throw в моем конструкторе dsNBC.xsd:

 internal int getLastIDbyMaxPeg()
{
    throw new System.NotImplementedException();
}
  

и вот как я вызвал метод в PegawaiControl.cs в папке с именем Control :

 public int getNumID()
{
     return Peg.getLastIDbyMaxPeg();
}

public string generateIDPeg()
{
    string id = "PEG";
    return id   Convert.ToString(getNumID()   1);
}
  

и в макете границ я просто вызвал generateIDPeg() в локальную переменную следующим образом : string idPegw = PC.generateIDPeg();

Ну, getLastIDbyMaxPeg() — это имя метода в наборе данных запроса dsNBC.xsd, который я создал. Таким образом, фактическим кодом реализации для этого метода является запрос в dataset . Я получил консультацию здесь, как я могу реализовать запрос как фактическую реализацию в исключении throw? Вы можете увидеть трассировку стека здесь

Вы можете мне помочь?

Комментарии:

1. Если вы вызываете метод, и единственное, что делает метод, это генерирует исключение, тогда вы получите исключение… Вам нужно удалить throw new System.NotImplementedException(); строку и реализовать там свой собственный код.

2. Строка throw new System.NotImplementedException(); представляет собой текст-заполнитель. Вам нужно вернуть некоторый int из этого метода.

3. Можете ли вы добавить трассировку стека исключения к вашему вопросу?

4. Еще один для тега «почему он делает то, что я ему говорю, пожалуйста, остановите его».

5. это реальная жизнь?

Ответ №1:

Вы должны удалить этот код и заменить его своей реальной реализацией.
Метод не был реализован (т. Е. Создан для того, чтобы действительно что-то делать, а не выбрасывать NotImplementedException ), только вызывается.

Он не просто автоматически удалит себя, потому что вы вызываете метод, вы должны предоставить реализацию.

Поместите свою логику внутри метода и удалите текущую строку, чтобы исправить вашу ситуацию:

 internal int getLastIDbyMaxPeg()
{
    //Do some things
    //return some int value
}
  

Комментарии:

1. но getLastIDbyMaxPeg() — это имя метода, который я создаю в наборе данных, чтобы найти последний максимальный идентификатор из базы данных, поэтому код является запросом… Вот почему перед getLastIDbyMaxPeg() есть «Привязка». потому что привязка — это переменная для TableAdapter … как я могу поместить код во внутренний int getLastIDbyMaxPeg, в то время как сам код является запросом для dataset ? @DangerZone

2. Это совершенно другой вопрос. Вам нужно будет изучить, как выполнять запросы на C #, и поместить свой запрос в этот метод.

Ответ №2:

Вы действительно вызвали метод getLastIDbyMaxPeg(), который является источником вашей проблемы.

Это исключение означает именно то, что оно говорит: вы не реализовали метод getLastIDbyMaxPeg() перед его вызовом. Прямо сейчас все, что getLastIDbyMaxPeg делает, это выдает NotImplementedException() . (Это исключение является стандартным «заполнителем» для метода, который необходимо реализовать, но еще не реализован).

Если вы throw new NotImplementedException() замените его реальной реализацией, ваша проблема будет решена.