小编use*_*491的帖子

F#中的接口和抽象类

我正在尝试在F#中创建一小段代码.我的想法是,我将有一个定义一些方法,属性和事件的接口.使用这个接口我想定义一个抽象类(具有泛型类型),它将实现一些属性/方法,但不是所有在接口中定义的成员.定义所有成员的责任在于派生类.

到目前为止,我仍然坚持使用接口和抽象类.我遇到的问题:

  • 抽象类定义无法识别接口定义
  • 我不确定如何为抽象类中的接口定义抽象成员

接口编译正常,但抽象类有几个错误.消息包含在代码中

所有评论,更正,提示等都表示赞赏.由于这是我对F#的第一次试验,可能有很多错误需要指出.

我到目前为止的代码

接口定义

namespace A
    type IValueItem =
        interface    
            [<CLIEvent>]
            abstract member PropertyChanged : 
                Control.IEvent<System.ComponentModel.PropertyChangedEventHandler, 
                              System.ComponentModel.PropertyChangedEventArgs>

            abstract ConvertedX : double with get, set

            abstract Y : double with get, set

            abstract member CreateCopy : obj

            abstract member NewTrendItem : obj
        end
Run Code Online (Sandbox Code Playgroud)

和抽象类

namespace A
    [<AbstractClass>]
    type ValueItem<'TX>() =

        [<DefaultValue>]
        val mutable _y : double

        let _propertyChanged = new Event<_>()

        // ERROR: This type is not an interface type
        // ERROR: The type 'obj' is not …
Run Code Online (Sandbox Code Playgroud)

f#

5
推荐指数
1
解决办法
761
查看次数

标签 统计

f# ×1