2009-06-02 12 views
2

実行時に型付きデータセットのインスタンスを自分のコードに動的に作成しようとしています。私は私に利用できるタイプがありますが、私はこれをしようとするとき:型付きデータセットを動的に定義しますか?

object obj = Activator.CreateInstance(Type.GetType("TYPED DATASET TYPE HERE")); 

問題はタイプが私はそれを試してみて、実行時にコードに応じて有効ではないようです。私はここで何が間違っていますか?

+0

asp.netに関連する多くの問題があります。 問題をローカライズするための最初のステップは、ライブラリ、コンソール、またはwinformsアプリケーションからインスタンスを作成することです。 –

+0

Re comment - 実際には、typeof(TheKnownType).Assembly.GetType(...)はすべきです。インスタンスを作成する必要はありません。 –

+0

実際にキャストしようとしたときに見つけたもう一つの事柄...最後に.Unwrap()を追加して、必要なオブジェクトのタイプにキャストできるようにしてください。 そうすることで、標準のデータテーブルとしてキャストすることができました。 – Noah

答えて

3

タイプはどこに定義されていますか? (このアセンブリ)。

アセンブリに修飾された名前を付けるのでなければ、アセンブリを呼び出すだけで、いくつかの他のキーアセンブリが表示されます。オプション:

  • (そのアセンブリ内の既知のタイプから)Assemblyインスタンスを取得し、上GetType(fullyQualifiedName)を使用
  • ( "somen.amespace.sometype、someassembly、...")アセンブリ修飾名を使用しますAssemblyインスタンス
+0

提案していただきありがとうございます!私がやったことは、ローカルの既知のインスタンスを作成し、そのオブジェクトに対してgettype()を呼び出し、そこからプロパティを使用することでした。アセンブリを指定することでその問題が解決されたようです。 – Noah

0

適切なデータセットコードが出力されていると想定すると、アセンブリを読み込む必要がある場合もあります。

次のネットネームスペースreflection.emitとリフレクションを調べます。

また、リフレクションを使用して新しいクラスを生成してインターセプタを作成する、windsorなどのオープンソースプロジェクトを見ることもできます。そこにあなたが学ぶことができるコードがあるかもしれません。

関連する問題