実行時に型付きデータセットのインスタンスを自分のコードに動的に作成しようとしています。私は私に利用できるタイプがありますが、私はこれをしようとするとき:型付きデータセットを動的に定義しますか?
object obj = Activator.CreateInstance(Type.GetType("TYPED DATASET TYPE HERE"));
問題はタイプが私はそれを試してみて、実行時にコードに応じて有効ではないようです。私はここで何が間違っていますか?
実行時に型付きデータセットのインスタンスを自分のコードに動的に作成しようとしています。私は私に利用できるタイプがありますが、私はこれをしようとするとき:型付きデータセットを動的に定義しますか?
object obj = Activator.CreateInstance(Type.GetType("TYPED DATASET TYPE HERE"));
問題はタイプが私はそれを試してみて、実行時にコードに応じて有効ではないようです。私はここで何が間違っていますか?
タイプはどこに定義されていますか? (このアセンブリ)。
アセンブリに修飾された名前を付けるのでなければ、アセンブリを呼び出すだけで、いくつかの他のキーアセンブリが表示されます。オプション:
Assembly
インスタンスを取得し、上GetType(fullyQualifiedName)
を使用Assembly
インスタンス提案していただきありがとうございます!私がやったことは、ローカルの既知のインスタンスを作成し、そのオブジェクトに対してgettype()を呼び出し、そこからプロパティを使用することでした。アセンブリを指定することでその問題が解決されたようです。 – Noah
適切なデータセットコードが出力されていると想定すると、アセンブリを読み込む必要がある場合もあります。
次のネットネームスペースreflection.emitとリフレクションを調べます。
また、リフレクションを使用して新しいクラスを生成してインターセプタを作成する、windsorなどのオープンソースプロジェクトを見ることもできます。そこにあなたが学ぶことができるコードがあるかもしれません。
asp.netに関連する多くの問題があります。 問題をローカライズするための最初のステップは、ライブラリ、コンソール、またはwinformsアプリケーションからインスタンスを作成することです。 –
Re comment - 実際には、typeof(TheKnownType).Assembly.GetType(...)はすべきです。インスタンスを作成する必要はありません。 –
実際にキャストしようとしたときに見つけたもう一つの事柄...最後に.Unwrap()を追加して、必要なオブジェクトのタイプにキャストできるようにしてください。 そうすることで、標準のデータテーブルとしてキャストすることができました。 – Noah