GeoViewInputEventArgs e.Location的行为类似于null,但通过在Watch中对其进行深入研究,我可以看到它不是null

时间:2019-04-26 14:57:42

标签: c# xamarin xamarin.forms esri .net-standard-2.0

我有一个奇怪而令人沮丧的问题。我有一个活动正在这样做:

        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',然后对其进行深入研究,然后再深入进行“位置”,那么我将看到期望的属性。

如果我在手表中键入“ e.Location”,则手表的输出为空白(不说为空)。另外,当我这样做时,我注意到在输出窗口中,我得到了这个重复的异常文本,该文本重复了十次:

  

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 \ external \ NRefactory \ ICSharpCode.NRefactory.CSharp \ Ast \ Expressions \ MemberReferenceExpression.cs:line   105点   Mono.Debugging.Evaluation.NRefactoryExpressionEvaluator.Evaluate(EvaluationContext   ctx,字符串表达式,Object ExpectedType)   E:\ A_work \ 785 \ s \ external \ debugger-libs \ Mono.Debugging \ Mono.Debugging.Evaluation \ NRefactoryExpressionEvaluator.cs:line   82点   Mono.Debugging.Evaluation.ObjectValueAdaptor.GetExpressionValue(EvaluationContext   ctx,字符串表达式)在   E:\ A_work \ 785 \ s \ external \ debugger-libs \ Mono.Debugging \ Mono.Debugging.Evaluation \ ObjectValueAdaptor.cs:line   1411

我在另一个项目中也使用过类似的代码,但是没有发生这种奇怪的事情。 关于发生的事情以及如何解决的任何想法?

1 个答案:

答案 0 :(得分:0)

在与另一位开发人员讨论此问题大约两天后,我发现我正在使用的ESRI库在两个不同的命名空间中具有类GeoViewInputEventArgs。这些类必须相同或非常接近相同。因此,切换到正确的名称空间后,它现在可以按预期工作。我真的不知道为什么有人会在他们的库中使用相同的类名。