Ich arbeite an einem TypeProvider, der eine XSD-Datei liest und einen Typ für jeden Typ in der XSD definiert. Jedoch habe ich ein Problem in dem unten stehenden Code habeKompilierung Fehler bei bereitgestellten Typ
type schema = XmlProviders.Schema<"file.xsd">
type Bazzer = {
Sum : XmlProviders.bar
}
in der letzten Zeile bekomme ich eine Kompilation Fehlermeldung, dass XmlProviders.bar existiert nicht. Die Umsetzung, wie ich die Typen definieren, sind wie folgt
let defineType (xType : XElement) =
let name = xType.Attribute(XName.Get "name").Value
let t = ProvidedTypeDefinition(thisAssembly,
ns,
name,
baseType = Some typeof<obj>)
let ctor = ProvidedConstructor(parameters = [ ],
InvokeCode= (fun args -> <@@ "" :> obj @@>))
t.AddMember ctor
do provider.DefineStaticParameters(parameters, fun tyName args ->
let filename = args.[0] :?> string
let main = ProvidedTypeDefinition(thisAssembly,ns,
tyName,
baseType = Some typeof<obj>)
//Elements is a list of XElement
elements |> List.map defineType |> ignore
main
Ich weiß, dass ein XmlProviders.bar Typ da erstellt, wenn ich eine zusätzliche Zeile in den DefineType provider.AddMember t
dann bekomme ich eine Fehlermeldung,
The type provider 'XmlProviders.SampleTypeProvider' reported an error: container type for 'XmlProviders.bar' was already set to 'XmlProviders.Schema'
Wo XmlProviders.Schema
die ProvidedTypeDefinition
von provider
identifiziert ist bin ich ein wenig verloren, warum der Compiler beschwert sich, dass die Art, während, wenn ich nicht da ist explizit fügt ich den Fehler, dass es schon da
ist
es sieht aus wie Sie sich der workitem bereits GitHub sind, aber ich werde es hier hinzufügen, um anderen Menschen bewusst zu machen, Ihre Bemühungen [Support XSD in XmlPro Vider] (https://github.com/fsharp/FSharp.Data/issues/57) und nur für den Fall, dass ich meine diesbezügliche Frage verlinke (frei, diese zu entfernen, wenn ich zu intrudierend bin) [Wie man sich dem Schreiben nähert F # -Typ Provider, der komplexe Schema erzwingt?] (Http://stackoverflow.com/questions/20024418/how-to-approach-writing-an-f-type-provider-that-enforces-complex-schema). Mal sehen, ob ich hier behilflich bin (das heißt, ich bin eher Anfänger). – Veksi