Ошибка после выбора объекта с помощью Perst для Windows Phone - PullRequest
1 голос
/ 09 августа 2011

У меня следующая ситуация:

В моем приложении WP7 есть экран входа в систему, на котором выполняются следующие строки кода:

var userQuery = DataAccessManager.Instance.Database.Select<LocalUser>(u => _userLogin.Equals(u.Login));  //_userLogin and Login property are strings
var lstUser = userQuery.ToList();

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

var lstUser = userQuery.ToList();

Mobiltec.Atheneum.Common.Utils.Synchronization.AuthHandler + <> c__DisplayClass2. userLogin в System.Reflection.RuntimeFieldInfo.GetValue(Объект obj) в System.Linq.jvm.ExpressionInterpreter.b _0 (поле FieldInfo) в System.Linq.jvm.Extensions.OnFieldOrProperty (SelfInfo, действие 1 onfield, Action 1 onprop) в System.Linq.jvm.ExpressionInterpreter.VisitMemberInfo (MemberInfo mi) в System.Linq.jvm.ExpressionInterpreter.VisitMemberAccess (член MemberExpression) в System.Linq.jvm.ExpressionVisitor.Visit (выражение для выражения) в выражении System.Linq.jvm.Expall для выражений (выражение для выражения).System.Linq.jvm.ExpressionVisitor.Visit (Выражение выражения) в System.Linq.jvm.ExpressionInterpreter.Interpret (аргументы LambdaExpression lambda, Object []) в System.Linq.jvm.Interpreter.Run (Object [] arg) в системе.Linq.jvm.Interpreter.FuncRunner [T, TResult] (аргумент LocalUser) в Perst.Database.LinqПеречислитель 1.MoveNext() at System.Collections.Generic.List 1..ctor (источник IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable 1) в Mobiltec.Atheneum.Common.Utils.Synchronization.AuthHandler.Authenticate (String _userLogin, String _password, String deviceNickname) в Mobiltec.Atheneum.Reader.WindowsPhone.Controls.LoginControl. <> C _DisplayClass4.b__0 (состояние объекта) в System.Threading.ThreadPool.WorkItem.doWork (объект o) в System.Threading.Timer.ring ()

любойИдея об этом?У нас один и тот же класс в приложении Silverlight to Desktop, и я не знаю, почему это происходит с WP7.

PS1: Проблема не возникает только с классом LocalUser ...это с любым классом.

PS2: Если я использую это:

var userQuery = DataAccessManager.Instance.Database.Select<LocalUser>(u => "cesarautor@atheneum.com".Equals(u.Login)); //as sample...any dumb string works

вместо

var userQuery = DataAccessManager.Instance.Database.Select<LocalUser>(u => _userLogin.Equals(u.Login));

это работает ...

Заранее спасибо

1 Ответ

1 голос
/ 11 августа 2011

Я нашел несколько других ссылок о Perst и FieldAccessException: например, http://forums.mcobject.com/index.php?showtopic=7916

Возможно, это будет вызвано тем, что код каким-то образом пытается использовать отражение в этом выражении - так как это будет работатьОК в менее строгой среде рабочего стола Silverlight.

Работает ли это, если вы измените ссылку _userLogin вместо ссылки на локальную переменную - так как для этого потребуются меньше / другие вызовы отражения

...