我有两个共享代码的项目。原始源文件位于项目/命名空间“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'”。
有人可以解释/提供解决方案吗?