У меня большое количество. NET приложений Framework 4.8. Они широко используют System.Web, который является только API фреймворка. Чтобы упростить переход на. NET Core /.NET 5+, я хотел бы извлечь некоторые функции кода фреймворка в. NET стандартные библиотеки.
Это создаст ситуацию где мои новые базовые приложения вызывают стандартные библиотеки, которые могут ссылаться на код приложения фреймворка для выполнения своей работы, пока этот код еще не обновлен. Это вообще возможно? Могут ли стандартные библиотеки создавать экземпляры классов фреймворков, которые используют только API фреймворка, такие как system.web?
В моей текущей ситуации у меня есть 3 класса в трех отдельных проектах в 2 решениях.
Solution A
StandardClass (.NET Standard 2.0)
TestClass (.NET Core 3.1, MSTest)
Solution B
FrameworkClass (.NET Framework 4.8)
Solution B
строится в dll, на которую ссылается Solution A
. My TestClass
создает экземпляр StandardClass
и вызывает StandardClass.Foo()
.
StandardClass
имеет свойство _frameworkClass
типа FrameworkClass
, инициализированное в конструкторе StandardClass
.
StandardClass.Foo()
вызывает _frameworkClass.Bar()
и возвращает строку, но Bar()
использует System.Web.HttpContext на протяжении всех своих процессов, среди других классов System.Web. Поэтому, когда срабатывает StandardClass.Foo()
, я получаю сообщение об ошибке: System.Web.HttpContext cannot be loaded from System.Web
Я полагал, что, пока StandardClass
не знает, какие классы FrameworkClass
использует для выполнения своей работы, тогда это будет отлично.