Ich habe einen einfachen Typ Provider, die Typen abhängig von meinem Parameter zur Verfügung stellen. Ich würde gerne wissen, ob es möglich ist, die Definition von "AskedTypeDefinitions" zu definieren, die eine andere "DependedTypeDefinition" erben würden.f # Typ Provider Vererbung
Ich weiß, dass statisch kann ich wie folgt vorgehen:
type People() = class end
type Student() =
inherit People()
type Teacher() =
inherit People()
und dann kann ich Muster Spiel wie diese mit Typ Testmuster:
let f (x:People) =
match x with
| :? Student -> "Student"
| :? Teacher -> "Teacher"
| _ -> "Nothing !!"
Was würde Ich mag in meiner Art tun Der Provider muss CreatedTypeDefinitions erstellen, die eine andere "DependencyTypeDefinition" erben. Wenn ich den Type-Provider verwende, um diese Typen zu erzeugen, kann ich eine Muster-Übereinstimmung auf ihnen finden (zum Beispiel weiß ich, dass zur Laufzeit einer dieser Typen instanziiert ist, aber ich weiß nicht welcher, außer dass es eine der bereitgestelltenTypeDefinitions ist)).
Vielen Dank für Ihre Zeit! statt Vererbung passende
type Occupation =
| Student
| Teacher
type People(occupation) =
member this.Occupation = occupation
class end
type Student() =
inherit People(Student)
type Teacher() =
inherit People(Teacher)
let findPerson (person : People) =
match person.Occupation with
| Student -> "Student"
| Teacher -> "Teacher"
Ich persönlich mag vermeiden Objektvererbung in FSharp Verwendung aufgrund upcasting and downcasting
Vielen Dank für Ihre Hilfe :). Das Problem mit dieser Lösung ist, dass TP keine DU oder Datensätze bereitstellt. Ich kann den von Ihnen beschriebenen Typ "Besetzung" nicht angeben. – Leleutch
Hallo Leleutch, Ich habe meine Antwort bearbeitet, um die Art der Beschränkung aufzunehmen –