2009-11-08 2 views

ответ

15

Это в основном так же, как и в любом другом языке:

open System.ComponentModel 
type MyType() = 
    let ev = new Event<_,_>() 
    let mutable str = "" 
    member x.StringProp 
    with get() = str 
    and set(str') = 
     str <- str' 
     ev.Trigger(x, PropertyChangedEventArgs("StringProp")) 
    interface INotifyPropertyChanged with 
    [<CLIEvent>] 
    member x.PropertyChanged = ev.Publish 
+9

Это не «в основном те же», как и другие языки: P –

+1

Спасибо, Что же такое [] атрибут делать? Кажется, я не могу найти документацию. – rysama

+4

@RodYan - он влияет на скомпилированную форму, которую принимает событие; для взаимодействия с другими языками .NET (и для реализации интерфейсов, отображающих события .NET), вам необходимо применить его к значению IEvent. Это приводит к генерированию методов 'add_' и' remove_', в отличие от фактического выставления свойства типа 'IEvent <_,_>', как описано на http://msdn.microsoft.com/en-us/library/ee370437(VS 0,100) .aspx. – kvb

Смежные вопросы