无法隐式转换类型' class'到界面'

时间:2012-07-11 09:27:07

标签: inheritance interface linked-list

我有两个共享代码的项目。原始源文件位于项目/命名空间“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'”。

有人可以解释/提供解决方案吗?

0 个答案:

没有答案