私はそうのような動的にアセンブリをロードするクラスがあります。C#Bug?ジェネリック型を持つアセンブリをロード
foreach (var cspecType in asm.GetTypes())
{
RunTestOnType(cspecType);
}
ロードされたアセンブリ参照他のアセンブリで:
Assembly asm = Assembly.LoadFile(args[1]);
runner.RunTestOnAssembly(asm);
はその後、別のクラスは、そのアセンブリでテストを実行します同じフォルダ
[Debug \ Tests]とアセンブリを読み込むプログラムは、
[Debug]フォルダにあります。
読み込まれたアセンブリ(CalcSpecAsm):
public class CalcSpec : CSpecFacade<ICalc>
{
public CalcSpec()
: base(new Calc())
{
}
}
参照アセンブリ(CalcAsm):
public class Calc : ICalc
{
/// <summary>
/// Initalisation constructor
/// resets the Total value.
/// </summary>
public Calc()
{
Total = 0;
}
.....
CSpecFacadeは別のアセンブリで参照されています。
今、問題は、アセンブリのCalcSpecAsmをロードすると、GetTypes()でアセンブリのloaderErrorが取得され、CalcAsmアセンブリへの参照を解決できないということです。
問題は、このコード行です:public class CalcSpec : CSpecFacade<ICalc>
私はジェネリック引数ICalcを削除し、コンストラクタでそれをinitize場合、それは完璧に動作しますが、それは私が後だものではないのです。
ただし、loaderAssemblyプログラムを[Debug \ Test]にコピーして実行すると、すべて正常に動作します。
この問題を解決する方法とその原因は何ですか?
アセンブリのロード方法が表示されていません... –
アセンブリをロードする方法を示すポストを編集しました – BartoszAdamczewski
ここにバグはありません。その動作は期待されており、どのように設計されています。 – leppie