PowerUp adalah perpustakaan metode ekstensi untuk .NET Core, ia menambahkan fungsi Umum ke dalam kerangka kerja.
Powerupcore Nuget
Powerupcore Azure Nuget
⏩ Ringan: Tujuannya bukan untuk berisi metode 5k, tetapi hanya memiliki metode yang berguna setiap hari (menurut saya)
.NET Core kompatibel
Unit diuji
100% didokumentasikan
Semua metode ekstensi dijelaskan dan raison d'etre disediakan dalam dokumentasi berikut.
Sederhanakan sintaks yang diperlukan untuk memverifikasi wehather konten string adalah inter atau tidak.
Mengapa?
Untuk menghapus kode berulang
if ( "42" . IsInteger ( ) )
Foo ( ) ; Menghapus dari string konten string parameter.
Mengapa?
Untuk menghapus kode berulang
"My text" . Remove ( "My" ) // result: " text"
// instead of
"My text" . Replace ( "My" , string . Empty ) ; // result: " text"
Foo ( ) ; Memberikan sintaks yang lebih pendek untuk format metode string.
Mengapa?
Untuk membuat kodenya lebih pendek
// .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 ) ; Memungkinkan untuk dengan mudah mengonversi tring ke enum.
Mengapa?
Untuk menghapus kode berulang
private enum TestEnum
{
Val1 ,
Val2 ,
Val3
}
var enumVar = "Val1" . ToEnum < TestEnum > ( ) ; Memungkinkan untuk mendapatkan deskripsi yang dapat dibaca dari nilai enum.
private enum TestEnum
{
[ Description ( "Value with description" ) ]
ValWithDesc = 1 ,
ValNoDesc = 2 ,
AnotherNoDesc = 3
}
var testObject = TestEnum . ValWithDesc ;
string description = testObject . GetDescription ( ) ; Membantu menghapus lebih banyak elemen sekaligus dari koleksi.
Mengapa?
Untuk memberikan fitur tambahan yang berguna untuk koleksi
sourceList . RemoveRange ( deleteList ) ;Melakukan Fakul Salin Deep A Collection of Iclononable Objects.
var testList = _fixture . Create < List < clonableObj > > ( ) ;
var clone = testList . Clone ( ) ;
clone . First ( ) != testList . First ( ) Mendapat indeks terakhir koleksi.
Mengapa?
Untuk menghapus kode berulang
sourceList . GetLastIndex ( ) == ( sourceList . Count - 1 ) Melempar argumentnullexception jika argumen yang diberikan adalah nol.
Mengapa?
Untuk menggantikan penjaga.
objectShouldNotBeNUll . ThrowIfNull ( nameof ( objectShouldNotBeNUll ) ) ;
// Inspired on Microsoft.Practices.EnterpriseLibrary.Common.Utility
Guard . ArgumentNotNull ( objectShouldNotBeNUll , nameof ( objectShouldNotBeNUll ) ) ; Verifikasi bahwa suatu objek nol atau tidak nol.
Mengapa?
Untuk membuat sintaks untuk memverifikasi null cleaner dan lebih mudah dibaca manusia
var someObject = new object ( ) ;
//Before
if ( someObject != null )
Foo ( ) ;
//PowerUp
if ( someObject . isNull ( ) )
Foo ( ) ; Pastikan nilai objek adalah antara batas bawah dan atas.
Mengapa?
Untuk menyederhanakan sintaks untuk memverifikasi bahwa nilai ONBJEK adalah antara rentang tertentu
if ( 5 . Between ( 2 , 8 ) )
Foo ( ) ;
if ( 7 . Between ( 7 , 12 , BetweenOptions . Inclusive ) )
Foo ( ) ; Memungkinkan untuk cukup mencatat informasi tentang metode panggilan.
Mengapa?
Untuk menghindari kode membosankan, dan salin masalah pasta, skenario tipikal adalah pada awal metode pengontrol seperti:
[ 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 ) ;
....Metode logging sekarang bisa sederhana:
.. .
public async Task < IActionResult > AddProduct ( [ FromBody ] NewProduct newProduct )
{
_logger . LogThisMethod ( ) ;
.. .Mudah dari contoh untuk melihat seberapa banyak hal itu dapat mengurangi jumlah kode dan kemungkinan kesalahan
Tombol akses penyimpanan di Azure digunakan dalam otentikasi untuk mengakses akun penyimpanan.
Saat Anda membuat akun penyimpanan, Anda diberikan dua tombol akses penyimpanan yaitu kunci akses primer dan sekunder.
Lihat lebih banyak https://blogs.msdn.microsoft.com/mast/2013/11/06/why-does-an-azure-storage-account-have-two-access-keys/
Mengapa?
RedundantParse memungkinkan Anda secara berlebihan terhubung menggunakan kunci primer atau secara otomatis beralih ke secontday.
< 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" ] ) ;