如何在F#中定义可与C#互用的自定义RoutedEventArgs?
F#实现可跨C#/F#使用的自定义RoutedEventArgs
以下是对应你C#版本的F#实现,完全兼容C#代码调用,同时能在F#后端正常接收WPF事件传递的参数:
open System.Windows type NewTranscriptEventArgs(routedEvent: RoutedEvent, appendText: string) = inherit RoutedEventArgs(routedEvent) // 私有只读字段,对应C#中的readonly成员 let _appendText = appendText // 公共只读属性,C#可直接访问 member this.AppendText = _appendText
关键说明:
- 继承与构造函数:直接继承
RoutedEventArgs,构造函数传入RoutedEvent参数并调用基类构造,和C#版本的逻辑完全对齐 - 成员可见性:F#默认类和成员为public,无需额外标记即可被C#项目引用访问
- 只读属性:通过
let绑定私有字段,配合只读成员实现和C#版本一致的只读属性行为
使用注意:
- 确保包含该F#类的项目被C#项目引用,或两者处于同一解决方案
- F#后端的
NewTranscript命令参数需指定为NewTranscriptEventArgs类型,才能正确接收InvokeCommandAction传递的事件参数
内容的提问来源于stack exchange,提问作者Alan Wayne
相关产品推荐
相关产品推荐

