С# Интеграция классов из общих проектов со многими проектами

Я разбиваю старый проект на составные части, чтобы отдельные компоненты можно было использовать в нескольких других проектах.

Существует около 4 этапов, которые разделены на компоненты и 3 основных проекта, которые будут ссылаться на эти компоненты.

Существует основной класс (расположенный в общем проекте, назовите его мастер-классом для справки), который согласован во всем, что является общим. Я настроил общий проект и добавил ссылки, все работает нормально.

Проблема возникает при попытке передать переменную с использованием класса A (ссылку из версии мастер-класса Project A) в метод в версии мастер-класса для компонента A. Я получаю проблемы с совместимостью. (Вдоль строк невозможно неявно преобразовать MasterClassA в MasterClassA)

Я знаю, что они идентичны, и я понимаю, что они, по сути, являются отдельным экземпляром Мастер-класса, поэтому в настоящее время они несовместимы.

Я изучил generics/reflection, перешел на класс Portable Library и, похоже, ходил по кругу. Я знаю, что отражение медленное, поэтому я хотел бы избежать его, если это возможно.

Любые рекомендации по передовой практике и как решить проблему? Вот грубая схема компоновки. Макет решения


person Matt Scott    schedule 09.07.2018    source источник
comment
Если вам нужно поделиться своим мастер-классом, он должен находиться в общем проекте. Тогда вы сможете использовать его во всех местах. Дублирование класса и его компиляция в разные сборки приведут к полностью независимым классам, хотя и с тем же именем и содержимым.   -  person thehennyy    schedule 09.07.2018
comment
Он действительно находится в общем проекте, на который просто ссылаются в другом месте. Я обновил пост, чтобы сделать это более очевидным. Спасибо   -  person Matt Scott    schedule 09.07.2018


Ответы (1)


Если кто-то столкнется с этим, этот ответ решил проблему для меня;

Ссылка на общий проект в нескольких проектах решения

По сути, мы создаем библиотеку классов, которая ссылается на общий проект, а затем ссылаемся на новый проект, а не на общий проект.

person Matt Scott    schedule 30.07.2018