GeoViewInputEventArgs e.Location действует как ноль, но я могу видеть, что он не нуль, углубляясь в него в Watch - PullRequest
0 голосов
/ 26 апреля 2019

У меня странная и неприятная проблема. У меня есть событие, которое делает это:

        private async void EsriMap_GeoViewTapped(object sender, GeoViewInputEventArgs e)
    {
            if(e.Location == null)
            {
               // The code always goes into this if statement
               // it is acting like a null
                bool b = true;
            }
    }

Мой код xaml выглядит так:

        <esri:MapView x:Name="SiteMapView"
      Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="5"
      Map="{ Binding Map }"
      GeoViewTapped="EsriMap_GeoViewTapped"
      GraphicsOverlays="{Binding GraphicsOverlays}" />

Но если я смотрю в часы и набираю 'e', ​​а затем углубляюсь в них, а затем углубляюсь в Location, я вижу ожидаемые свойства.

Если я наберу 'e.Location' в часах, результат будет пустым (не будет нулевым). Также, когда я сделал это, я заметил, что в окне вывода я получаю этот повторяющийся текст исключения, который повторяется примерно 10 раз:

System.ArgumentException: поле 'k__BackingField' не является действителен для этого типа. в Mono.Debugger.Soft.ObjectMirror.GetValues ​​(IList 1 fields) in E:\A\_work\785\s\external\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft\ObjectMirror.cs:line 93 at Mono.Debugger.Soft.ObjectMirror.GetValue(FieldInfoMirror field) in E:\A\_work\785\s\external\debugger-libs\Mono.Debugger.Soft\Mono.Debugger.Soft\ObjectMirror.cs:line 74 at Mono.Debugging.Soft.FieldValueReference.get_Value() in E:\A\_work\785\s\external\debugger-libs\Mono.Debugging.Soft\FieldValueReference.cs:line 129 at Mono.Debugging.Evaluation.ValueReference.GetChild(String name, EvaluationOptions options) in E:\A\_work\785\s\external\debugger-libs\Mono.Debugging\Mono.Debugging.Evaluation\ValueReference.cs:line 274 at Mono.Debugging.Evaluation.NRefactoryExpressionEvaluatorVisitor.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression) in E:\A\_work\785\s\external\debugger-libs\Mono.Debugging\Mono.Debugging.Evaluation\NRefactoryExpressionEvaluatorVisitor.cs:line 1042 at ICSharpCode.NRefactory.CSharp.MemberReferenceExpression.AcceptVisitor[T](IAstVisitor 1 посетитель) в E: \ A_work \ 785 \ s \ внешний \ NRefactory \ ICSharpCode.NRefactory.CSharp \ Аст \ Выражения \ MemberReferenceExpression.cs: линия 105 в Mono.Debugging.Evaluation.NRefactoryExpressionEvaluator.Evaluate (EvaluationContext ctx, строковое выражение, объект Ожидаемый тип) в E: \ A_work \ 785 \ s \ внешних \ отладчик-ЛИЭС \ Mono.Debugging \ Mono.Debugging.Evaluation \ NRefactoryExpressionEvaluator.cs: линия 82 в Mono.Debugging.Evaluation.ObjectValueAdaptor.GetExpressionValue (EvaluationContext ctx, String exp) в E: \ A_work \ 785 \ s \ внешних \ Debugger-Libs \ Mono.Debugging \ Mono.Debugging.Evaluation \ ObjectValueAdaptor.cs: линия 1411

Я также использовал подобный код в другом проекте, и у меня не было такой странной вещи. Есть идеи, что происходит и как это исправить?

1 Ответ

0 голосов
/ 26 апреля 2019

Примерно после двух дней изучения этой проблемы с другим разработчиком я обнаружил, что используемая мной библиотека ESRI имеет класс GeoViewInputEventArgs в двух разных пространствах имен. Классы должны быть идентичными или очень близкими к идентичности. Таким образом, после переключения на правильное пространство имен оно теперь работает как положено. Я действительно не знаю, почему кто-то использовал бы такое же имя класса в своей библиотеке.

...