私はXSDファイルを読み込み、XSDで定義された各型の型を提供するTypeProviderに取り組んでいます。私は最後の行に以下のコード指定された型でコンパイルエラーが発生する
type schema = XmlProviders.Schema<"file.xsd">
type Bazzer = {
Sum : XmlProviders.bar
}
に問題を持っているしかし、私はXmlProviders.barが存在しないというコンパイルエラーが発生します。
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
私はXmlProviders.barタイプが作成されていることを知っているし、次のように 私はタイプを定義する方法の実装があり、私はdefineType provider.AddMember t
に追加の行を追加した場合ので、私は
を言ってエラーが出ますThe type provider 'XmlProviders.SampleTypeProvider' reported an error: container type for 'XmlProviders.bar' was already set to 'XmlProviders.Schema'
XmlProviders.Schema
が
provider
で識別ProvidedTypeDefinition
ある
私は、コンパイラは型が存在しないことを不平を言う理由で失われたビットだ場合はしばらくI明示的に私はそれが同じような状況で終わるものになるよう、答えを見つけることが
すでにGitHubの作業項目を認識しているように見えますが、あなたの努力、他の人々に認識させるように、私はそれをここに追加します[XmlProでサポートXSD vider](https://github.com/fsharp/FSharp.Data/issues/57)、関連する質問にクロスリンクした場合に備えて(もし私があまりにも侵入しているなら、これを削除してもかまいません)複雑なスキーマを強制するF#型プロバイダ?](http://stackoverflow.com/questions/20024418/how-to-approach-writing-an-f-type-provider-that-enforces-complex-schema)私がここで助けになるかどうかを見てみましょう(つまり、私はこれで新人です)。 – Veksi