Mam następujące rodzaje:Korzystanie F # Opcja Wpisz w C#
and ListInfo() =
let mutable count = 0
// This is a mutable option because we can't have an infinite data structure.
let mutable lInfo : Option<ListInfo> = None
let dInfo = new DictInfo()
let bInfo = new BaseInfo()
member this.BaseInfo = bInfo
member this.DictInfo = dInfo
member this.LInfo
with get() = lInfo
and set(value) = lInfo <- Some(value)
member this.Count
with get() = count
and set(value) = count <- value
gdzie rekurencyjny "info lista" jest opcją. Albo jest jeden, albo nie ma żadnego. Muszę użyć tego z C#, ale dostaję błędy. To jest użycie próbki:
if (FSharpOption<Types.ListInfo>.get_IsSome(listInfo.LInfo))
{
Types.ListInfo subListInfo = listInfo.LInfo.Value;
HandleListInfo(subListInfo, n);
}
tutaj listInfo jest typu ListInfo jak wyżej. Próbuję tylko sprawdzić, czy zawiera wartość, a jeśli tak, to chcę z niej skorzystać. Ale wszystkie informacje dostępowe listInfo.LInfo zawiera błąd "Własność, indeksowanie lub lista zdarzeńInfo.LInfo nie jest obsługiwane przez język ..."
Ktoś, kto rozumie, dlaczego?
Nie sądzę, problem nie ma nic wspólnego z typem opcji ... Wygląda na to właściwości zadeklarowanej w F # nie jest rozpoznawany przez C# –