У меня есть объект ObjectDataSource на странице, которая создает ошибку «Object не соответствует типу назначения» при вызове метода Insert. Из сообщения Googling этого сообщения я считаю, что это сообщение обманчиво, и на самом деле я получаю пустую ошибку ссылки на объект, который ObjectDataSource пытается вызвать метод, но я чертовски, если я могу понять, почему..Net Ошибка объекта ObjectDataSource: объект не соответствует целевому типу
<asp:ObjectDataSource ID="dsAddComment" runat="server"
DataObjectTypeName="BookCatalogue.InteractionDocuments.UserComment"
SelectMethod="GetNewComment" TypeName="BookCatalogue.AddCommentPresenter"
InsertMethod="AddComment" OnObjectCreating="dsAddComment_ObjectCreating" />
Тип, который вызывается при вставке, представляет собой AddCommentPresenter. Метод AddComment не является статичным. Если я изменю это на статический, я не получу ошибку, и метод найден без проблем. Когда это не статично, возникает ошибка. Вот почему я считаю, что основная проблема заключается в том, что каким-то образом я не получаю действительный экземпляр класса Presenter при вызове метода AddComment.
Класс AddCommentPresenter не имеет конструктора без параметров. Это приведет к ошибке. Чтобы обойти это, я переопределяю событие ObjectCreating в кодировке моей страницы и назначаю экземпляр класса Presenter.
protected void dsAddComment_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { e.ObjectInstance = presenter; }
Я могу пройти через мой метод ObjectCreating и он является действительным, не нулевой Presenter экземпляр, который передается в собственность e.ObjectInstance.
Метод AddComment имеет правильную подпись.
public void AddComment(UserComment newComment)
{
...
}
Я также проверил очевидные вещи, как опечатка имя типа на странице ASPX, но все правильно там.
У кого-нибудь есть идеи? Должен сказать, что я считаю, что класс ObjectDataSource очень трудный для работы с ...
Работал также в моем случае, человек, который расстраивал. В моем случае это было недавно созданное «веб-приложение», которое было преобразовано с «веб-сайта» .... вероятно, почему эти файлы .cs были в каталоге «App_Code» в первую очередь. Отладчик был анти-полезным, потому что он нигде не сломался, просто бросил исключение в браузер! О, и это была только проблема на сервере разработки VS ... отлично работала при публикации в IIS! Трудно для Google, возможно, этот комментарий поможет другим найти это. –