PowerUp - это библиотека методов расширения для .NET Core, он добавляет полезные функции в структуру.
PowerUpcore Nuget
PowerUpcore Azure Nuget
⏩ Легкий вес: цель состоит не в том, чтобы содержать методы 5K, а иметь только повседневные полезные методы (на мой взгляд)
.NET CORE COMPATIBLE
Единица проверена
100% документировано
Все метод расширения объясняется, и в следующей документации предусмотрено смысл.
Упростите синтаксис, необходимый для проверки Wehather, содержимое строки - это интернет или нет.
Почему?
Чтобы удалить повторяющийся код
if ( "42" . IsInteger ( ) )
Foo ( ) ; Удаляет из строки содержимое строки параметров.
Почему?
Чтобы удалить повторяющийся код
"My text" . Remove ( "My" ) // result: " text"
// instead of
"My text" . Replace ( "My" , string . Empty ) ; // result: " text"
Foo ( ) ; Дает более короткий синтаксис для формата метода строки.
Почему?
Чтобы сделать код короче
// .net syntax
string . Format ( "Debug Level: {0} " {1} " {3}" , DebugLevel . Info , "Everything is awesome!" , DateTime . Now ) ;
// PowerUp syntax
"Debug Level: {0} " {1} " {3}" . Format ( DebugLevel . Info , "Everything is awesome!" , DateTime . Now ) ; Позволяет легко преобразовать тринг в перечисление.
Почему?
Чтобы удалить повторяющийся код
private enum TestEnum
{
Val1 ,
Val2 ,
Val3
}
var enumVar = "Val1" . ToEnum < TestEnum > ( ) ; Позволяет получить читаемое описание значения перечисления.
private enum TestEnum
{
[ Description ( "Value with description" ) ]
ValWithDesc = 1 ,
ValNoDesc = 2 ,
AnotherNoDesc = 3
}
var testObject = TestEnum . ValWithDesc ;
string description = testObject . GetDescription ( ) ; Помогает удалить больше элементов одновременно из коллекции.
Почему?
Чтобы обеспечить полезные дополнительные функции для коллекций
sourceList . RemoveRange ( deleteList ) ;Выполняет глубокую копию Frim Коллекцию Iclonable Objects.
var testList = _fixture . Create < List < clonableObj > > ( ) ;
var clone = testList . Clone ( ) ;
clone . First ( ) != testList . First ( ) Получает последний показатель коллекции.
Почему?
Чтобы удалить повторяющийся код
sourceList . GetLastIndex ( ) == ( sourceList . Count - 1 ) Бросает аргумент.
Почему?
Чтобы заменить Guard.argumentNotnull в .NET Core
objectShouldNotBeNUll . ThrowIfNull ( nameof ( objectShouldNotBeNUll ) ) ;
// Inspired on Microsoft.Practices.EnterpriseLibrary.Common.Utility
Guard . ArgumentNotNull ( objectShouldNotBeNUll , nameof ( objectShouldNotBeNUll ) ) ; Убедитесь, что объект является нулевым или не нулевым.
Почему?
Чтобы сделать синтаксис, чтобы проверить NULL Cleerer и более прочитанный для человека
var someObject = new object ( ) ;
//Before
if ( someObject != null )
Foo ( ) ;
//PowerUp
if ( someObject . isNull ( ) )
Foo ( ) ; Убедитесь, что значение объекта находится между нижней и верхней границей.
Почему?
Чтобы упростить синтаксис, чтобы убедиться, что значение ONBJECT находится между определенным диапазоном
if ( 5 . Between ( 2 , 8 ) )
Foo ( ) ;
if ( 7 . Between ( 7 , 12 , BetweenOptions . Inclusive ) )
Foo ( ) ; Позволяет просто записать информацию о методе вызова.
Почему?
Чтобы избежать скучного кода и скопировать проблему вставки. Сценарий Tipical находится в начале метода контроллера, такого как:
[ HttpPut ]
[ Route ( "[action]" ) ]
[ Produces ( "application/json" ) ]
[ ProducesResponseType ( typeof ( Product ) , StatusCodes . Status201Created ) ]
[ ProducesResponseType ( typeof ( string ) , StatusCodes . Status400BadRequest ) ]
public async Task < IActionResult > AddProduct ( [ FromBody ] NewProduct newProduct )
{
_logger . LogDebug ( $ " { DateTime . UtcNow : dd/MMM/yyyy } | 32: CatalogController.AddProduct()}" ) ;
if ( ! ModelState . IsValid )
return BadRequest ( ModelState ) ;
....Метод ведения журнала теперь может быть просто:
.. .
public async Task < IActionResult > AddProduct ( [ FromBody ] NewProduct newProduct )
{
_logger . LogThisMethod ( ) ;
.. .Из примера легко увидеть, сколько он может уменьшить устранение кода и возможность ошибок
Ключи доступа к хранилищу в Azure используются в аутентификации для доступа к учетной записи хранения.
При создании учетной записи хранилища вам предоставлены два клавиша клавиши доступа к хранилищам, т.е. основные и вторичные клавиши доступа.
Смотрите больше https://blogs.msdn.microsoft.com/mast/2013/11/06/why-does-an-azure-storage-account-have-two-access-keys/
Почему?
SendandAntParse позволяет избыточно подключаться к первичной клавише или автоматически переключаться в SeconDay.
< add key = " QueueConnectionString1 " value = " DefaultEndpointsProtocol=https;AccountName=weu########## " />
< add key = " QueueConnectionString2 " value = " DefaultEndpointsProtocol=https;AccountName=weu########## " />
< add key = " QueueReference " value = " myQueueReference " /> var storageAccount = CloudStorageAccountHelper . RedundantParse (
CloudConfigurationManager . GetSetting ( "QueueConnectionString1" ) ,
CloudConfigurationManager . GetSetting ( "QueueConnectionString2" ) ) ;
var queueClient = storageAccount . CreateCloudQueueClient ( ) ;
var myQueue = queueClient . GetQueueReference ( ConfigurationManager . AppSettings [ "QueueReference" ] ) ;