0

一部の言語では、「new」キーワードをオーバーライドして、型のインスタンス化方法を制御できます。これを .NET で直接行うことはできません。ただし、たとえば、「タイプが見つかりません」例外を処理し、そのタイプを「新しく」作成した人が爆発する前にタイプを手動で解決する方法があるかどうか疑問に思っていましたか?

私は、xml ベースのファイルを読み取り、その中に記述されている型をインスタンス化するシリアライザーを使用しています。シリアライザーを制御することはできませんが、できれば独自の appdomain ホストを作成せずに、プロセスと対話したいと考えています。

別のシリアル化方法を提案しないでください。

4

4 に答える 4

5

イベント ハンドラーを AppDomain.CurrentDomain.AssemblyResolve にアタッチして、プロセスに参加できます。

EventHandler は、ResolveEventArgs で渡された型を担当するアセンブリを返す必要があります。

詳細については、MSDNを参照してください。

于 2008-09-16T20:50:26.897 に答える
1

オーバーライドできるAppDomain.TypeResolveイベントもあります。

于 2008-09-16T20:54:58.443 に答える
1

select is not brokenは、別の見方をする方法について説明しています。障害は、ツールではなく設計にある可能性があります。

何か他のことをするために「新しい」ものを手に入れようとするのは間違ったアプローチになると思います。

演算子のオーバーロードを注意して使用する必要がある理由を考えてください。言語のセマンティクスに隠れた変更がある場合、直感に反し、デバッグが困難です。

一歩下がって、より大きな文脈で設計を見て、問題を解決するためのより賢明な方法を見つけてください。

于 2008-09-16T20:56:35.163 に答える
-1

Reflection と Activator クラスを確認してください。文字列からオブジェクトを作成できるようになります。確かに、オブジェクトは、アクセスできるアセンブリの 1 つにある必要があります。

于 2008-09-16T20:49:26.290 に答える