動的コードが静的コードのメソッドを呼び出せるようにするには、動的コードをコンパイルするときに必要な参照を提供する必要があります。
詳細:
MyClass
動的コードからアクセスしたいというクラスがあるとします。クラスを別のアセンブリに入れて、MyClass
それを呼び出しましょうMyAssembly
。動的コードをコンパイルする場合、のプロパティの1つをICodeCompiler
使用して、アセンブリを参照として提供できます。したがってtypeof(MyClass).Assembly
、そのプロパティを介して提供する必要があります。
これで、コードをコンパイルすると、次のようなことができるようになります。
MyClass.CallSomeMethod();
ここでは名前空間は問題ではありません。動的コードが完全な型名を使用していることを確認できます(たとえば、動的コードの先頭でをMyNameSpace.MyClass
生成できます。using MyNamespace;
最後に、動的コードが使用できる明確なインターフェイスを定義するというリチャードの推奨事項に参加します。コンパイルするときに、このインターフェイスを含むアセンブリを参照として提供する必要があります。