我正在尝试创建一个Sub,它可以获取一个对象并为其添加一堆事件处理程序,但该对象可以是所有具有这些事件的N种类型中的任何一种.我怎样才能做到这一点?如果我只是将它作为一个Object,如下所示,AddHandler会抱怨Object不存在该事件.
可以这样做吗?
Sub addHandlers(ByVal inputObject as object)
AddHandler inputObject.MouseDown, AddressOf HandleClick
AddHandler inputObject.MouseUp, AddressOf HandleMouseUp
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:这些对象中的每一个都是一个类的实例,它继承了已经拥有这些事件的不同类(通常是一个控件).
谢谢你的帮助,
山姆.
我在 VB.NET 中工作 - C# 答案很好。
我正在构建一个系统来处理针对特定 XmlSchema 的 XML 验证。我的 XML 文档中的每个错误都有一个 SchemaException 实例,我可以从中获取错误的行号和位置以及消息。据我所知,确定特定错误(无效属性、缺少元素等)的唯一方法是读取不可靠的消息字符串,因为 MS 将来可能更改它并且消息被本地化。
我需要能够在不依赖 .Message 属性的情况下区分这些错误,以便显示我自己的自定义错误并在我的文本编辑器中突出显示错误。
区分这些的正确方法是什么?这一定是可能的,对吧?
更多信息:
异常的 LinePosition 属性并不总是报告我想要开始突出显示的位置 - 例如,所有与属性相关的异常都会报告属性的开始,如果这是问题。
SchemaException 提供了一个 SourceSchemaObject 属性,我可能可以用它来确定问题是来自元素还是属性,如果幸运的话,我可能会通过提取导致错误并以某种方式将它与 SourceSchemaObject 进行比较,但这感觉像是一个非常复杂和笨拙的解决方案 - 如果我能解决特定的错误,我可以通过一些正则表达式工作来解决它。