我的解决方案包含三个项目
LowestLevel类,以及一个MidLevel继承自的类LowestLevelHighestLevel继承自上述MidLevel类的类我在下面列出了这些类的代码 - 请注意每个项目都有自己的命名空间
namespace ClassLib
{
public class HighestLevel : MidLevel
{
public HighestLevel() { }
}
}
namespace SharedProj
{
public class MidLevel : LowestLevel
{
public MidLevel() { }
}
public class LowestLevel
{
public LowestLevel() { }
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Console Applications Program类中,我正在尝试创建类的新实例HighestLevel,就像这样
LowestLevel myclass = new HighestLevel();
Run Code Online (Sandbox Code Playgroud)
但是,这在Visual Studio中给出了一个错误,说明
Cannot implicitly convert type ClassLib.HighestLevel to SharedProj.LowestLevel
任何人都可以帮助我理解为什么会这样,以及我如何解决它?当这三个类都在同一个项目/命名空间内时,似乎没有出现这个问题,所以也许它是由在各个项目中拆分这些类的方法引起的.
问题是包含LowestLevel和MidLevel代码的项目是一个共享项目.这很重要,因为在共享项目模型中,共享是通过重用代码文件而不是实际程序集来完成的.它与复制代码文件并在两个项目中使用它们基本相同.这意味着版本LowestLevel里面SharedProj是一个完全不同的东西LowestLevel里面ClassLib.
当你想跨平台共享代码时,共享项目曾经对Xamarin开发这样的事情很重要,但现在已经被创建.NET Standard类库取代了.