- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个应用程序,它使用 .net 4.0 System.Device.Location 命名空间监视计算机的位置。但是,我发现 GeoCoordinateWatcher.PositionChanged 事件仅在我在类上注册事件时触发,而不是在我使用它实现的接口(interface)时触发。
这是代码的工作版本:
using (GeoCoordinateWatcher geoCoordinateWatcher = new GeoCoordinateWatcher())
{
geoCoordinateWatcher.PositionChanged += (sender, args) => Console.WriteLine(args.Position);
geoCoordinateWatcher.Start();
Thread.Sleep(2000);
}
这会按我的预期输出位置对象。当我将代码更改为:
using (GeoCoordinateWatcher geoCoordinateWatcher = new GeoCoordinateWatcher())
{
IGeoPositionWatcher<GeoCoordinate> positionWatcher = geoCoordinateWatcher;
positionWatcher.PositionChanged += (sender, args) => Console.WriteLine(args.Position);
positionWatcher.Start();
Thread.Sleep(2000);
}
它不输出任何东西。我想使用该接口(interface),以便更轻松地对代码进行单元测试。
我做错了什么?我对通用接口(interface)上的事件有什么微妙的误解吗?
谢谢
安迪
编辑:
我认为这可能是微软代码中的一个错误。我查看了 .net 反射器中的 System.Device.dll,发现 GeoCoordinateWatcher 有 2 个 PositionChanged 事件的实现。第一个是它自己的 PositionChanged 事件的直接实现,第二个是 IGeoPositionWatcher.PositionChanged 事件的显式实现。
第二个似乎没有在代码中的其他任何地方使用。
我还设法通过从 GeoCoordinateWatcher 派生并自己实现接口(interface) PositionChanged 事件找到了一个快速的解决方法:
public class MyGeoCoordinateWatcher : GeoCoordinateWatcher, IGeoPositionWatcher<GeoCoordinate>
{
event EventHandler<GeoPositionChangedEventArgs<GeoCoordinate>> IGeoPositionWatcher<GeoCoordinate>.PositionChanged
{
add { base.PositionChanged += value; }
remove { base.PositionChanged -= value; }
}
}
现在,如果我创建一个 MyGeoCoordinateWatcher 而不是上述两组代码。
谁能证实这一点?
谢谢
编辑:
在 Microsoft Connect 上提出此问题:https://connect.microsoft.com/VisualStudio/feedback/details/613235/igeopositionwatcher-geocoordinate-positionchanged-event-does-not-fire-on-geocoordinatewatcher-class
最佳答案
我完全同意你的诊断,很好的侦查。显式接口(interface)实现正在更新名为 m_positionChanged 的字段。 PositionChanged 事件正在更新名为 PositionChanged 的委托(delegate)字段。
看到大男孩们摸索这个很鼓舞人心。除了黑客反射直接访问私有(private)字段之外,没有简单的解决方法。您可以在 connect.microsoft.com 报告错误。只需一个指向该线程的链接就可以为他们提供所需的一切。
关于c# - IGeoPositionWatcher<GeoPosition>.PositionChanged 没有被解雇,但是 GeoCoordinateWatcher.PositionChanged 是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3922742/
我的代码需要范围守卫,但是我是否必须手动 Dismiss() 从函数正常退出时所有范围守卫?即 void Deleter(MyClass* obj) { delete obj; } MyCla
当 UIPopoverController 被 UIPopoverController 本身的矩形之外的任何地方触摸解除时,是否有一个方法被调用? 状态: firstView 有一个 navBar。它
为调用实现 twilio,我尝试使用广播接收器而不是 twilio 逻辑的 Activity 。我的广播接收器应该通过 onReceive() 捕捉到 Intent ,但实际上并没有。听到了呼唤!但无
在我的应用程序中,我希望在多个 View 中显示 alertview。所以我所做的只是在实用程序类中编写了一个 alertview 并在任何地方使用它。这工作正常。 我什至尝试设置 但徒劳无功。 实用
我想使用具有以下行为/功能的 PopupWindow: 它是可聚焦的(在内部有交互式控件,例如按钮) 弹出窗口“下”的 View 必须正确使用弹出窗口外的触摸 .. 但弹出窗口必须保留在屏幕上,即使在
我正在为 tvOS 开发应用程序,但在取消 UIAlertController 时遇到问题。我在普通 UIViewController 之上呈现一个 UIAlertController。当我按下电视
我有一个 Controller A,还有一个 UIButton,单击它我将呈现一个新的 Controller B。但问题是 Controller B 首先嵌入了 NAV。所以最终我将介绍 UINavi
当我单击从 Web 服务打开所单击项目的数据的列表项时,我想打开一个 ProgressDialog。ProgressDialog 需要出现,直到被点击项目的 WebContent 被打开。 我知道使用
任何人都可以帮助我防止 alertview 在其按钮单击事件中被解雇吗?? 我有一个 textview 作为我的 alertView 的 subview ,如果 textview 的值为 nil,我不
这是按钮操作: @IBAction func readyPressed(sender: NSButton) { self.dismissController(Hardness)
我正在尝试防止当用户点击弹出窗口外部时弹出窗口被关闭。我似乎对此有其他问题/答案,他们似乎都建议使用 modalInPopover 作为 View 。正如我所看到的那样,我已经在 viewDidApp
我正在将 SFSafariViewController 推送到 UITabBarController 中。但单击 Safari 完成按钮会关闭 UITabBarController。如何预防? 最佳答
我有 2 个 viewcontroller,第一个 VC 包含 backButton。 firstVC.h @protocol DVDelegate -(void)DVViewControllerD
这是我的设置: 导航 Controller :ViewcontrollerA -> ViewControllerB ViewcontrollerB 显示一个 imagePickerController
我使用 ProgressDialog 向用户显示他必须等待,并在用户必须等待时使我的应用程序表面“不可触摸”。我向 progressDialog 添加了一个按钮,如果某些条件为真,它应该开始一些操作。
我目前正在尝试实现移动和导出模式的功能。我所做的就是让用户导航到他们想要将文件移动/导出到的目录,然后在他们选择的目录上调用 dismissGrantingAccessToURL,并附加原始文件的文件
我是一名优秀的程序员,十分优秀!