F# 智能感应在某些情况下不能工作

在现在的Visual Studio 2012中,F#智能感应有时候在某些情况下不能工作。那么在何种情况下它会不工作呢?可以绕过去么?让我来告诉你详细情况吧。

请看如下代码:

 1 open System.Collections.ObjectModel
 2 
 3 module PortableLibrary1 = 
 4     type Keys = 
 5     | One = 1
 6     | Two = 2
 7     | Three = 3
 8     | Four = 4
 9     | Five = 5
10     | Six = 6
11     | Seven = 7
12     | Eight = 8
13     | Nine = 9
14 | Zero = 0
15 
16 type DataContext() = 
17     let l = ObservableCollection<int>()
18     l.    
19     //member this.List with get() = l

请看注释行之前的”l.”。如果那个成员没有被注释掉,”l.” 可以显示智能感应,你可以看到”l”的成员。如果”l.”是最后一行,智能感应根本不工作。

另外,错误信息也没有用,见如下的截图:

这个问题的解决代价太大,因此微软决定不去修复。那么我们有什么绕过去的办法么?

答案是肯定的。这段代码语法是不正确的,因为”do” 缺失了。加上”do” 就可以工作了。

posted @ 2012-06-08 17:28  tryfsharp  阅读(204)  评论(1编辑  收藏  举报