如何修复此F#3.0报价错误
我下载了一个Github项目,在VS 2012中打开它时,自动进行了升级。我得到了一个我不理解的错误。它与报价有关 这是我复制粘贴在下面的文件: 错误是“引用可能不涉及对捕获的局部变量的赋值或获取其地址” 违规代码为该键和值:如何修复此F#3.0报价错误,f#,f#-3.0,F#,F# 3.0,我下载了一个Github项目,在VS 2012中打开它时,自动进行了升级。我得到了一个我不理解的错误。它与报价有关 这是我复制粘贴在下面的文件: 错误是“引用可能不涉及对捕获的局部变量的赋值或获取其地址” 违规代码为该键和值: this.Control.DetailsName, this.Control.details值, namespace FSharp.Windows.Sample 打开System.Windows.Data 开放系统.绘图 open System.Windows.Forms
this.Control.DetailsName,
this.Control.details值,
namespace FSharp.Windows.Sample
打开System.Windows.Data
开放系统.绘图
open System.Windows.Forms.DataVisualization.Charting
open System.Collections.ObjectModel
打开FSharp.Windows
打开FSharp.Windows.ui元素
[]
键入StockPricesChartModel()=
继承模型()
抽象StocksInfo:get、set的ObservableCollection
抽象SelectedStock:StockInfoModel,带get,set
键入StockPricesChartView(控件),如下所示=
继承部分视图(控件)
做
let area=新图表区域()
area.AxisX.MajorGrid.LineColor
)
this.Control.Details.SetBindings(
itemsSource=,
//////////////////违规代码///////////////////
columnBindings=fun stockProperty->
[
这个.Control.DetailsName,
此.Control.details值,
]
)
键入StockPricesChartController()=
继承控制器()
覆盖此。InitModel模型=
model.StocksInfo
异步的
异步的{
让!result=Mvc.startWindow(StockPickerView(),StockPickerController())
结果|>Option.iter(有趣的新项目->
model.StocksInfo.Add newItem
model.SelectedStock它在F#3.0中的突破性变化
正如Leaf Garland所指出的,这并不是对你问题的直接回答,但看看升级到VS 2012的代码,它正在打破F#3.0的变化
正如Leaf Garland所指出的,这不是对你问题的直接回答,但看看升级到VS 2012的代码它没有回答你的问题,但Dmitry的代码第14章将其全部升级到VS 2012。它没有回答你的问题,但Dmitry的代码第14章将其全部升级到VS 2012。
namespace FSharp.Windows.Sample
open System.Windows.Data
open System.Drawing
open System.Windows.Forms.DataVisualization.Charting
open System.Collections.ObjectModel
open FSharp.Windows
open FSharp.Windows.UIElements
[<AbstractClass>]
type StockPricesChartModel() =
inherit Model()
abstract StocksInfo : ObservableCollection<StockInfoModel> with get, set
abstract SelectedStock : StockInfoModel with get, set
type StockPricesChartView(control) as this =
inherit PartialView<unit, StockPricesChartModel, StockPricesChartControl>(control)
do
let area = new ChartArea()
area.AxisX.MajorGrid.LineColor <- Color.LightGray
area.AxisY.MajorGrid.LineColor <- Color.LightGray
this.Control.StockPricesChart.ChartAreas.Add area
let series =
new Series(
ChartType = SeriesChartType.Column,
Palette = ChartColorPalette.EarthTones,
XValueMember = "Symbol",
YValueMembers = "LastPrice")
this.Control.StockPricesChart.Series.Add series
override this.EventStreams =
[
this.Control.AddStock.Click |> Observable.mapTo()
]
override this.SetBindings model =
this.Control.StockPricesChart.DataSource <- model.StocksInfo
model.StocksInfo.CollectionChanged.Add(fun _ -> this.Control.StockPricesChart.DataBind())
this.Control.Symbol.SetBindings(
itemsSource = <@ model.StocksInfo @>,
selectedItem = <@ model.SelectedStock @>,
displayMember = <@ fun m -> m.Symbol @>
)
this.Control.Details.SetBindings(
itemsSource = <@ model.SelectedStock.Details @>,
////////////////// OFFENDING CODE ///////////////////
columnBindings = fun stockProperty ->
[
this.Control.DetailsName, <@@ stockProperty.Key @@>
this.Control.DetailsValue, <@@ stockProperty.Value @@>
]
)
type StockPricesChartController() =
inherit Controller<unit, StockPricesChartModel>()
override this.InitModel model =
model.StocksInfo <- ObservableCollection()
override this.Dispatcher = fun() ->
Async <| fun model ->
async {
let! result = Mvc.startWindow(StockPickerView(), StockPickerController())
result |> Option.iter(fun newItem ->
model.StocksInfo.Add newItem
model.SelectedStock <- newItem
)
}