据我所知,Caliburn.Micro以一种约定式的方式,在WPF项目中执行大量自动布线和管道工作;采用MVVM模式。
问题:Caliburn.Micro中是否有任何仅限于C#使用的部分?哪些部分不能与F#代码一起使用?使用F#会失去什么?
问题:Caliburn.Micro中是否有任何仅限于C#使用的部分?哪些部分不能与F#代码一起使用?使用F#会失去什么?
public string SomeProp
{
get { return someField; }
set
{
someField = value;
NotifyOfPropertyChange(() => SomeProp);
}
}
但是这种方式并不适用于 F#。你的选择要么回退到字符串方式,要么使用引号进行改进。我已经使用了类似以下代码的方式:
let notify<'a> (notifier: PropertyChangedBase) (expr: Expr<'a>) =
let name =
match expr with
| PropertyGet (_, pi, _) -> pi.Name
| _ -> failwith "Can't get property name to notify"
notifier.NotifyOfPropertyChange(name)
这被称为:
member this.SomeProp
with get () =
someField
and set(value) =
someField <- value
notify this <@ this.SomeProp @>