代码之家  ›  专栏  ›  技术社区  ›  Jack Ukleja

使用F记录对象更改的方法#

f#
  •  4
  • Jack Ukleja  · 技术社区  · 14 年前

    注:我正在寻找答案 而不是“实现INotifyPropertyChanged”或“做一些在C#中可以轻松完成的事情”。如果这是解决F中问题的唯一方法,那么F就不是我要找的工具。

    5 回复  |  直到 14 年前
        1
  •  5
  •   Ganesh Sittampalam    14 年前

    您可以使类不可变(例如,使用标准的不可变类型,如记录和联合,或者使对象只包含不可变的内容),而不是在发生更改时检测和通知更改。然后您可以编写一个函数来“区分”一个类的两个实例,并让某个代理根据某个计划或触发器查找更改,然后将差异发送到另一端。

        2
  •  4
  •   gradbot    14 年前

    INotifyPropertyChanged 用于F#。

    type DemoCustomer() =
        let mutable someValue = 0
        let propertyChanged = Event<_, _>()
    
        member this.MyProperty
            with get() = someValue
            and  set(x) =
                someValue <- x
                propertyChanged.Trigger(this, PropertyChangedEventArgs("MyProperty"))
    
        interface INotifyPropertyChanged with
            [<CLIEvent>]
            member this.PropertyChanged = propertyChanged.Publish
    
        3
  •  3
  •   jdoig    14 年前

    使用INotifyPropertyChanged接口怎么样?并引发在数据更改时导致数据被复制的事件?

        4
  •  1
  •   Mauricio Scheffer    14 年前

    我会使用代理库: Castle DynamicProxy , LinFu , Spring.NET 等等。

    使用代理库,您可以轻松地 implement INotifyPropertyChanged 以透明、非侵入性的方式。

        5
  •  0
  •   James    14 年前