我的解决方案包含三个项目:
LowestLevel
类和一个继承自MidLevel
的{{1}}类LowestLevel
类,该类继承自上述HighestLevel
类我在下面包含了这些类的代码-请注意,每个项目都有自己的命名空间
MidLevel
在控制台应用程序namespace ClassLib
{
public class HighestLevel : MidLevel
{
public HighestLevel() { }
}
}
namespace SharedProj
{
public class MidLevel : LowestLevel
{
public MidLevel() { }
}
public class LowestLevel
{
public LowestLevel() { }
}
}
类中,我正在尝试创建Program
类的新实例,
HighestLevel
但是这在Visual Studio中给出了错误,说明
LowestLevel myclass = new HighestLevel();
任何人都可以帮助我了解这是为什么以及如何解决该问题吗?当这三个类都在同一个项目/名称空间中时,似乎不会出现此问题,因此可能是由于将这些类拆分到各个项目中而导致的。
答案 0 :(得分:5)
问题是包含LowestLevel
和MidLevel
代码的项目是共享项目。这很重要,因为在共享项目模型中,共享是通过重用代码文件而不是实际的程序集来完成的。这与复制代码文件并在两个项目中使用它们基本相同。这意味着LowestLevel
中SharedProj
的版本与LowestLevel
中ClassLib
的版本完全不同。
当您想跨平台共享代码时,共享项目曾经对Xamarin开发之类的事情很重要,但是现在已经由创建.NET Standard类库所取代。