seiryu:
MyLib.dllから、単純にMyLib2.dll内のクラスを利用するのであれば動的にLoadFileするコードは書けそうなのですが、継承クラスを作成する場合、どのように記述すればよいのかわかりませんでした。
具体的にどのように実装することになるのでしょうか?
なるほど。そう言われると確かに困りますね。seiryuさんのおっしゃる通りです。
問題を軽く考えていたため、回答が雑になってしまいました。申し訳ございません。
さて、解決策ですが、下記の通りです。
早い話が、PowerShell本体 が、MyLib2.dll で定義されている継承元クラスが参照できるようにすれば、
MyLib.dll から、MyLib2.dll を参照しても問題ない設定をすれば、解決できます。
問題のライブラリ(MyLib.dll, MyLib2.dll ) ※C#側のソース修正は不要
//自作アセンブリ MyLib.dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyLib2;
namespace MyLib
{ public class MyClass1
{ public void Test1()
{ Console.WriteLine("HELLO TEST1"); }
}
public class MyClass2 : MyClass0
{ public void Test2()
{ Console.WriteLine("HELLO TEST2"); }
}
}
//自作アセンブリ MyLib2.dll
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyLib2
{ public class MyClass0
{ public void Test0()
{ Console.WriteLine("HELLO TEST0"); }
}
}
そして、下記のようなPowerShellコード(*.ps1ファイル)を実行すると、継承元クラスが参照できない問題はなくなり
お望み通り動くようになります。(LoadFile となっていた箇所を LoadFrom に変更してみてください。)←下記返信スレッドに記載した内容です。
[System.Reflection.Assembly]::LoadFrom("C:\work\MyLib2.dll")[System.Reflection.Assembly]::LoadFrom("C:\work\MyLib.dll")
$obj1 = New-Object MyLib.MyClass1
$obj2 = New-Object MyLib.MyClass2
$obj1.Test1();
$obj2.Test2();
$obj2.Test0();
実行結果:

もし、これでやってみてもダメだった場合は、ご連絡下さい。宜しくお願いします。