Мое решение содержит три проекта:
- Общий проект
- Содержит класс
LowestLevel
и класс MidLevel
, который наследуется от LowestLevel
- Библиотека классов
- Содержит ссылку на общий проект
- Содержит класс
HighestLevel
, который наследуется от класса MidLevel
, упомянутого выше
- Консольное приложение
- Содержит ссылку на библиотеку классов и общий проект
![enter image description here](https://i.stack.imgur.com/zLr0r.png)
Я включил код для этих классов ниже - обратите внимание, что у каждого проекта есть свое собственное пространство имен
namespace ClassLib
{
public class HighestLevel : MidLevel
{
public HighestLevel() { }
}
}
namespace SharedProj
{
public class MidLevel : LowestLevel
{
public MidLevel() { }
}
public class LowestLevel
{
public LowestLevel() { }
}
}
В моем классе консольных приложений Program
я пытаюсь создать новый экземпляр HighestLevel
class, вот так
LowestLevel myclass = new HighestLevel();
Однако это приводит к ошибке в Visual Studio, заявляющей
Cannot implicitly convert type ClassLib.HighestLevel to SharedProj.LowestLevel
Может кто-нибудь помочь мне понять, почему это так, икак я могу обойти это?Кажется, что эта проблема не возникает, когда все эти три класса находятся в одном проекте / пространстве имен, поэтому, возможно, это вызвано подходом разделения этих классов по различным проектам.