プロジェクト A にインターフェース A があり、プロジェクト B にインターフェース A を実装するクラス B がある場合、プロジェクト B にはプロジェクト A への参照が必要です。
プロジェクト B:
public class B : A
{
void A.MethodA()
{
}
}
ただし、プロジェクト C がクラス B をインターフェイス A として使用せずに使用する場合 (したがって、B のインスタンスで A のメソッドを呼び出したり、B のインスタンスを A にキャストしたりするコードはありません)、プロジェクト A を参照する必要があります。 B はインターフェイス A を明示的に実装します (上記のコード例のように)。
プロジェクト C:
public class C
{
public C()
{
var b = new B();
}
}
結果は次のとおりです。
型 'A' は、参照されていないアセンブリで定義されています。アセンブリ 'A, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' への参照を追加する必要があります。
何故ですか?