#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()
замените его реальной реализацией, ваша проблема будет решена.