ISystemClock недоступен в netstandard2.0 - PullRequest
0 голосов
/ 09 мая 2020

Я все еще пытаюсь понять. Net Стандарт против Net Ядро после многих лет разработки ASP. NET Фреймворк. Я создал новое «приложение» Web Api, которое нацелено на структуру netcoreapp3.1 вместе со средним уровнем / Business Logi c ClassLib и Data Access ClassLib, обе из которых нацелены на. Net Стандарт для максимальной совместимости в будущем. Однако я не могу использовать ISystemClock из пространства имен Microsoft.AspNetCore.Authentication в. Net Standard classlibs!

Читая этот SO вопрос , я считаю, что это может быть потому что netstandard2.0 может не реализовывать структуру Microsoft.AspNetCore.App. Это правильно?

Если нет, должен ли я:

  1. Предоставить свой собственный IMySystemClock интерфейс в моих библиотеках классов, который может реализовать само «приложение» тривиальный конкретный класс для ?; или

  2. Измените мой средний класс и уровни доступа к данным на netcoreapp3.1 framework (кажется, что больше не нужно убивать и ограничивать для этого)?

  3. Что-то еще? Может быть, мне не хватает смысла. Net Standard`?

Услуга (например, ISystemClock) для предоставления текущего (реального или фиктивного) времени кажется довольно фундаментальной услугой, поэтому Я не уверен, почему он не отображается в. net стандартной структуре?

Спасибо BloodBaz

1 Ответ

1 голос
/ 09 мая 2020

Если вы хотите получить доступ к этой функции из библиотеки, измените целевую структуру вашей библиотеки на. NET Core 3.1. Библиотеки могут быть встроены в. NET Standard или. NET Core. Вы не можете использовать. NET Базовые функции в стандартной библиотеке. NET, но вы можете сделать наоборот. Используйте. NET Стандартные функции в основной библиотеке. NET.

Также в качестве примечания, если это не требуется по соображениям совместимости, я рекомендую вам перейти на. NET Standard 2.1. Visual Studio по умолчанию устанавливает для новых проектов. NET Standard 2.0, но тонна новых функций была добавлена ​​в. NET Standard 2.1.

Я провел годы в. NET Framework, поэтому я чувствую спутанность сознания. Мне потребовалось время, чтобы привыкнуть к этому. У меня есть огромный проект, который я недавно перешел с. NET Framework на. NET Standard /. NET Core. В итоге я разделил свой код на три части. A. NET Стандартная библиотека 2.1 со всеми не. NET спецификациями ядра c общим кодом, библиотека. NET Core 3.1 со всеми моими. NET спецификациями ядра c общим кодом (который ссылался на мои . NET Стандартная библиотека), и мои приложения как проекты. NET Core 3.1 (которые ссылались на мою библиотеку. NET Core 3.1).

Обязательно прочтите ответ на этот вопрос а также: В чем разница между типами проектов. NET Core и. NET Standard Class Library?

...