Как я могу увидеть типы, с помощью которых InvalidCastException вызывается в C #? - PullRequest
1 голос
/ 04 августа 2009

В моем DAL LINQ-to-SQL я получаю «Указанное приведение не было действительным».

Вот точная ошибка:

System.InvalidCastException was unhandled by user code   Message="Specified cast is not valid." Source="System.Data.Linq"   StackTrace:
   at System.Data.Linq.IdentityManager.StandardIdentityManager.SingleKeyManager`2.TryCreateKeyFromValues(Object[] values, V& v)
   at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
   at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
   at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
   at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
   at System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
   at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges()
   at DomainModel.Repository.Concrete.SqlClientRepository.InsertClientByUsername(String username, Client clientInfo) in C:\Documents and Settings\Owner\Desktop\CollectionTree v1.1\DomainModel\Repository\Concrete\SqlClientRepository.cs:line 99
   at WebUI.Secure.Controllers.ClientAdminController.EditProfile(Client clientProfile) in C:\Documents and Settings\Owner\Desktop\CollectionTree v1.1\WebUI.Secure\Controllers\ClientAdminController.cs:line 69
   at lambda_method(ExecutionScope , ControllerBase , Object[] )
   at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassa.<InvokeActionMethodWithFilters>b__7()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)   InnerException:

Это происходит на моем db.SubmitChanges ().

Во всяком случае, где в этом исключении какие типы он испытывает проблемы с приведением? Было бы полезно сузить его, если бы я знал, с какими конкретными типами у него были проблемы. Я могу навести курсор на исключение в Visual Studio, но я не знаю, на какие свойства смотреть.

Ответы [ 2 ]

1 голос
/ 05 августа 2009

Вы SOL, по крайней мере для .NET <4.0. Я ввел отчет об ошибке подключения («<a href="https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=350254" rel="nofollow noreferrer"> InvalidCastException должен отображать или содержать более подробную информацию »), и они говорят, что это исправлено.

Я еще не видел исправления.

1 голос
/ 04 августа 2009

Иногда я получаю InvalidCastException через COM-взаимодействие и ... Я SOL? Кажется, InvalidCastException в чистом IL получает информацию о типе, но когда она обрабатывается в конвертере взаимодействия, она пропускает эту часть. Я предполагаю, что в оболочках COM проблема связана с тем, что HRESULT для E_NOINTERFACE не содержит информации о задействованных типах, а оболочка не может вернуться назад и посмотреть на предыдущий элемент, который был QueryInterface находясь в поиске. Даже если бы он это сделал, ему нужно было бы поискать Guid и надеяться, что обертка взаимодействия для этого типа будет лежать вокруг, чтобы получить от него значимую информацию.

Если LINQ-to-SQL использует COM-взаимодействие за кулисами, есть ваш ответ. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...