Inheritance 无法隐式转换类型';类别';至';接口';

Inheritance 无法隐式转换类型';类别';至';接口';,inheritance,interface,linked-list,Inheritance,Interface,Linked List,我有两个共享代码的项目。原始源文件位于项目/命名空间“ns1”中;其中引用了项目/命名空间“ns2”。我不能在另一个方向添加引用,因为这将创建循环依赖性。为了解决这个问题,我在VisualStudio中通过“添加为链接”将“接口I”添加到“ns2” 这基本上是共享代码的定义: namespace ns1 { public interface I { } public class A : I { } } namespace ns2 { using ns1;

我有两个共享代码的项目。原始源文件位于项目/命名空间“ns1”中;其中引用了项目/命名空间“ns2”。我不能在另一个方向添加引用,因为这将创建循环依赖性。为了解决这个问题,我在VisualStudio中通过“添加为链接”将“接口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());
       }
    }
 }
名称空间ns1
{
公共C类
{
公共方法m()
{
列表=新列表();
添加(新的A());
}
}
}
构建成功。但如果我这样做:

 namespace ns1
 {
    using ns2;

    public class C
    {
       public method m()
       {
          List<I> list = new List<I>();
          list.Add(new B());
       }
    }
 }
名称空间ns1
{
使用ns2;
公共C类
{
公共方法m()
{
列表=新列表();
添加(新的B());
}
}
}
生成失败-“无法将类型“ns2.B”隐式转换为“ns1.I”

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

试试这个:试试这个: