4
에있는 차별화 된 유니온에서 일치 항목을 축소하는 방법 개체를 반환하는 함수의 결과를 어떻게 가져 와서 F #의 차별화 된 유니버스로 캐스팅합니까?F #
문제 시나리오, 셀레늄의 webdriver에서 자바 스크립트 실행 프로그램을 사용하고 있습니다. 문서는 출력이 certian 유형 또는 유형 목록의 객체 여야한다고 지정합니다. (Ref https://www.w3.org/TR/webdriver/#executing-script)
차별화 된 유니온에 캐스팅하여 반환하는 개체에 일부 구조를 제공하고 싶습니다. 나중에 일치시킬 수 있습니다.
캐스팅은 직접 작동하지 않으며 공용체 유형은 생성자를 가질 수 없으므로 정확하게 캐스팅하지 못합니다. 이것에 대해 적절한 방법은 무엇입니까?
type JsResult =
| E of IWebElement
| I of Int64
| B of bool
| S of String
| LE of IWebElement list
| LI of Int64 list
| LB of bool list
| LS of String list
| N of Object
override self.ToString() =
match self with
| E e -> e.Text
| I i -> i.ToString()
| B b -> b.ToString()
| S s -> s
| LE le -> String.concat " " (le |> Seq.map(fun x-> x.Text))
| LI li -> String.concat " " (li |> Seq.map(fun x-> x.ToString()))
| LB lb -> String.concat " " (lb |> Seq.map(fun x-> x.ToString()))
| LS ls -> String.concat " " ls
| N _ -> String.Empty
let execute script : JsResult = (browser :?> IJavaScriptExecutor).ExecuteScript(script) :> JsResult