Я пытаюсь, чтобы имя возвращало значение item.name, где item является экземпляром класса C#.Ошибка: может потребоваться аннотация типа
файл фс содержит
namespace PatternMatch
type PatternMatch() =
member this.X = "F#"
namespace Items_
файл содержит FSX
#load "PatternMatch.fs"
open PatternMatch
open Items_
type item = Item
let Name item = item.name //this line throws the error
let rec sentence s item = function
| s when s="Action" -> ""
| s when s="Client" -> ""
| s when s="Classifier" -> ""
| s when s="Container" -> ""
| s when s="ControlFlow" -> ""
| s when s="Gaurd" -> ""
| s when s="Name" -> Name item
| s when s="ObjectFlow" -> ""
| s when s="Source" -> ""
| _ -> ""
let Name item = item.name
бросает ошибку. Items_
- это пространство имен C#, а Item
- это класс C# внутри.
Вся ошибка:
Lookup on object of indeterminate type based on information prior to this program point. A type annotation may be needed prior to this program point to constrain the type of the object. This may allow the lookup to be resolved. C:\Users\jzbedocs\Local Files\Visual Studio 2010\Projects\addin\trunk\PatternMatch\Script.fsx 11 17 PatternMatch
Вам нужна аннотация типа для 'item' паров из' функции name'. –
не является типом строки item = Элемент аннотации? Элемент - класс C#. – user3033411
@ user3033411 'type item = Item' создает псевдоним типа. В 'let Name (item: Item) = item.Name' param 'item' имеет аннотацию типа' Item'. –