Powerup est une bibliothèque de méthodes d'extension pour .NET Core, il ajoute des fonctionnalités utiles au cadre.
PowerUpcore Nuget
PowerUpcore Azure Nuget
⏩ Léger: l'objectif n'est pas de contenir des méthodes 5K, mais d'avoir uniquement des méthodes utiles de tous les jours (à mon avis)
.NET CORE COMPATIBLE
Testé unitaire
100% documenté
Toutes les méthodes d'extension sont expliquées et une raison d'être fournie dans la documentation suivante.
Simplifiez la syntaxe nécessaire pour vérifier que le contenu de la chaîne est un inter ou non.
Pourquoi?
Pour supprimer le code répétitif
if ( "42" . IsInteger ( ) )
Foo ( ) ; Supprime d'une chaîne le contenu de la chaîne de paramètre.
Pourquoi?
Pour supprimer le code répétitif
"My text" . Remove ( "My" ) // result: " text"
// instead of
"My text" . Replace ( "My" , string . Empty ) ; // result: " text"
Foo ( ) ; Donne une syntaxe plus courte pour le format de méthode de la chaîne.
Pourquoi?
Pour rendre le code plus court
// .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 ) ; Permet de convertir facilement un tring en énumération.
Pourquoi?
Pour supprimer le code répétitif
private enum TestEnum
{
Val1 ,
Val2 ,
Val3
}
var enumVar = "Val1" . ToEnum < TestEnum > ( ) ; Permet d'obtenir la description lisible de la valeur d'énumération.
private enum TestEnum
{
[ Description ( "Value with description" ) ]
ValWithDesc = 1 ,
ValNoDesc = 2 ,
AnotherNoDesc = 3
}
var testObject = TestEnum . ValWithDesc ;
string description = testObject . GetDescription ( ) ; Aide à supprimer plus d'éléments à la fois d'une collection.
Pourquoi?
Pour fournir une fonctionnalité supplémentaire utile aux collections
sourceList . RemoveRange ( deleteList ) ;Effectue une copie profonde dans une collection d'objets iclonables .
var testList = _fixture . Create < List < clonableObj > > ( ) ;
var clone = testList . Clone ( ) ;
clone . First ( ) != testList . First ( ) Obtient le dernier index d'une collection.
Pourquoi?
Pour supprimer le code répétitif
sourceList . GetLastIndex ( ) == ( sourceList . Count - 1 ) Lance ArgumentNullexception si l'argument donné est nul.
Pourquoi?
Pour remplacer le garde.argumentNotnull dans .NET Core
objectShouldNotBeNUll . ThrowIfNull ( nameof ( objectShouldNotBeNUll ) ) ;
// Inspired on Microsoft.Practices.EnterpriseLibrary.Common.Utility
Guard . ArgumentNotNull ( objectShouldNotBeNUll , nameof ( objectShouldNotBeNUll ) ) ; Vérifiez qu'un objet est nul ou non nul.
Pourquoi?
Pour rendre la syntaxe pour vérifier le nettoyant nul et plus lisible humain
var someObject = new object ( ) ;
//Before
if ( someObject != null )
Foo ( ) ;
//PowerUp
if ( someObject . isNull ( ) )
Foo ( ) ; Vérifiez que la valeur de l'objet est entre la limite inférieure et supérieure.
Pourquoi?
Pour simplifier la syntaxe pour vérifier qu'une valeur onbject se situe entre une certaine plage
if ( 5 . Between ( 2 , 8 ) )
Foo ( ) ;
if ( 7 . Between ( 7 , 12 , BetweenOptions . Inclusive ) )
Foo ( ) ; Permet de simplement enregistrer des informations sur la méthode d'appel.
Pourquoi?
Pour éviter le code ennuyeux et copier le problème de la pâte, le scénario Tipical est au début d'une méthode de contrôleur comme:
[ 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 ) ;
....La méthode de journalisation peut maintenant être simplement:
.. .
public async Task < IActionResult > AddProduct ( [ FromBody ] NewProduct newProduct )
{
_logger . LogThisMethod ( ) ;
.. .Il est facile de l'exemple de voir à quel point il peut réduire les amons de code et la possibilité d'erreurs
Les clés d'accès au stockage dans Azure sont utilisées dans l'authentification pour accéder au compte de stockage.
Lorsque vous créez un compte de stockage, vous êtes fourni avec deux clés d'accès de stockage, c'est-à-dire les clés d'accès primaires et secondaires.
Voir plus de https://blogs.msdn.microsoft.com/mast/2013/11/06/Why-does-an-azure-storage-account-have-two-access-keys/
Pourquoi?
Le redondantParse vous permet de vous connecter de manière redondante à l'aide de la clé primaire ou de passer automatiquement au 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" ] ) ;