1-е решение находится : \ Common \ Controls \ Controls.sln
и его проект : \ Common \ Controls \ Common.Controls \ Common.Controls.csproj
Описание : Это библиотека, которая содержит этот класс:
public abstract class OurUserControl : UserControl
{
// Variables and other getters/setters common to our UserControls
}
2-е решение находится : \ AControl \ AControl.sln
и его проект : \ AControl \ AControl \ AControl.csproj
Описание : Из множества форм / классов он будет содержать этот класс:
using Common.Controls;
namespace AControl
{
public partial class AControl : OurUserControl
{
// The implementation
}
}
Примечание о добавлении ссылок (не уверен, что это актуально):
Когда я добавляю ссылки (для проектов, которые я создаю), используя имена выше:
1. Я добавляю Common.Controls.csproj к AControl.sln
2. В AControl.sln я отключаю сборку Common.Controls.csproj
3. Я добавляю ссылку на Common.Controls (по проекту) в AControl.csproj .
Это (самый простой) способ, которым я знаю, как получить версии отладки, соответствующие ссылкам на отладку, и версии выпуска, соответствующие ссылкам на выпуск.
Теперь вот в чем проблема (третье решение / проект, который фактически использует UserControl):
3-е решение находится : \ MainProj \ MainProj.sln
и его проект : \ MainProj \ MainProj \ MainProj.csproj
Описание: Вот пример функции в одном из классов:
private void TestMethod<T>()
where T : Common.Controls.OurUserControl, new()
{
T TheObject = new T();
TheObject.OneOfTheSetters = something;
TheObject.AnotherOfTheSetters = something_else;
// Do stuff with the object
}
Мы могли бы вызвать эту функцию так:
private void AnotherMethod()
{
TestMethod<AControl.AControl>();
}
Это строит, запускает и работает. Нет проблем. Странно то, что после того, как я закрыл проект / решение и снова открыл его, у меня повсюду красные волнистые нервы. Я вывожу свой список ошибок и вижу множество ошибок (все, что связано с AControl, будет отмечено как ошибка).
Я увижу такие ошибки, как:
- Тип «AControl.AControl» нельзя использовать в качестве параметра типа «T» в универсальном типе или методе «MainProj.MainClass.TestMethod ()». Не существует неявного преобразования ссылок из AControl.AControl в Common.Controls.OurUserControl.
или внутри самого метода (свойства, расположенные в абстрактном классе):
- 'AControl.AControl' не содержит определения для 'OneOfTheSetters', и нет метода расширения 'OneOfTheSetters', принимающего первый аргумент типа 'AControl.AControl' (вы пропустили директиву using или ссылку на сборку? )
Между тем, я все еще могу собрать и запустить проект (тогда красные волнистые линии исчезнут, пока я не открою проект заново или не закрою / снова не открою файл). Мне кажется, что я могу неправильно настраивать проекты. Мысли?