2

コードを共有する 2 つのプロジェクトがあります。元のソース ファイルは project/namespace 'ns1' にあります。プロジェクト/名前空間「ns2」への参照があります。これは循環依存関係を作成するため、他の方向にも参照を追加することはできません。これを回避するために、Visual Studio で「リンクとして追加」によって「インターフェイス I」を「ns2」に追加しました。

これは基本的に共有コードの定義です。

 namespace ns1
 {
    public interface I { }

    public class A : I { }
 }

 namespace ns2
 {
    using ns1;

    public class B : I { }
 }

私がこれを行う場合:

 namespace ns1
 {
    public class C
    {
       public method m()
       {
          List<I> list = new List<I>();
          list.Add(new A());
       }
    }
 }

ビルドは成功します。しかし、私がこれを行うと:

 namespace ns1
 {
    using ns2;

    public class C
    {
       public method m()
       {
          List<I> list = new List<I>();
          list.Add(new B());
       }
    }
 }

ビルドが失敗する - 「タイプ 'ns2.B' を 'ns1.I' に暗黙的に変換できません」。

誰かが解決策を説明/提供してもらえますか?

4

0 に答える 0