国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end Tutoriel C#.Net Une classe de code de vérification asp.net encapsulée

Une classe de code de vérification asp.net encapsulée

Jan 13, 2017 pm 02:20 PM

La première réflexion est de savoir si ces attributs du code de vérification peuvent être définis (c'est-à-dire s'ils sont encapsulés dans une classe puis utilisés en exposant des attributs et des méthodes publics, ou si la vérification est implémentée directement dans le gestionnaire général) Génération de code vers la sortie), le résultat est malheureusement le dernier... L'algorithme à l'intérieur semble plut?t bien, du moins pour quelqu'un comme moi qui comprend à peine les algorithmes, alors j'ai pensé à l'encapsuler, puis elle l'a incorporé sans vergogne dans sa propre bibliothèque de classes. ^^

Analysez d'abord les lacunes de ce code (ce qu'elle pense)?:
1. Pour la programmation procédurale, si vous souhaitez modifier les propriétés du code de vérification, telles que la modification de la taille de la police, de la couleur d'arrière-plan et autres. détails, vous devez trouver le code correspondant dans le programme de traitement général et le modifier. Cependant, ce code est meilleur. Il sépare la génération de cha?ne de code de vérification et la génération d'images en différentes méthodes, ce qui facilite la recherche des endroits à modifier.
2. Si je souhaite appliquer cette fonction à d'autres endroits, comme un programme winform, alors ce code ne peut pas être réutilisé sous la forme d'un composant (une dll), mais peut être copié, collé et modifié...
3. Je n'ai pas constaté que le code de vérification avait été enregistré après sa génération (- -!)

Bien s?r, les soi-disant défauts sont relatifs, c'est-à-dire si vous avez le temps de le faire. réfléchissez-y puis concevez lentement une classe de code de vérification, vous le ferez certainement. Cela peut faire une classe relativement bonne, mais si vous travaillez sur un projet et que le projet est urgent, un tel code est en fait plus puissant. le découplage de code de modèle de conception orienté n'est qu'un nuage ~~~

La prochaine étape est ma modification de ce code. Tout d'abord, je détermine quel effet je veux, c'est-à-dire comment je veux l'utiliser après l'avoir encapsulé. Tout d'abord, j'espère que lors de son utilisation, il me suffira de créer une nouvelle instance de code de vérification (si nécessaire, je peux définir arbitrairement divers attributs du code de vérification), puis je pourrai appeler certaines méthodes de cette instance pour utiliser des cha?nes. , flux, objets bitmap et octets respectivement. Obtenez ce code de vérification sous la forme d'un tableau (notez que cette classe de code de vérification n'inclut pas la fonction de sauvegarde du code de vérification dans le contexte. Personnellement, je pense que générer le code de vérification et enregistrer le code de vérification dans le contexte sont deux fonctions différentes. Il n'est pas nécessaire d'ajouter cette fonction dans la catégorie du code de vérification). Dans ce cas, le code devient extrêmement simple dans le programme de traitement général. Il suffit d'abord de créer un code de vérification avec new, puis d'appeler la méthode pour obtenir le code de vérification sous forme de cha?ne, puis de l'enregistrer le matin et l'après-midi. . Quant à savoir s'il existe dans la session ou dans le cookie, cela vient selon les besoins, et la classe du code de vérification ne s'en soucie pas, elle appelle alors une autre méthode pour obtenir le code de vérification sous la forme d'un tableau d'octets, afin que l'image puisse être obtenue. être généré via la méthode context.Response.BinaryWrite(), c'est-à-dire qu'il n'y a que trois lignes de code dans le programme de traitement général. Le code d'appel est à peu près le suivant?:

/// <summary> 
/// 獲取驗(yàn)證碼(一般處理程序入口函數(shù)) 
/// </summary> 
/// <param name="context">當(dāng)前上下文</param> 
public void ProcessRequest(HttpContext context) 
{ 
// 創(chuàng)建驗(yàn)證碼 
ValidateCode validateCode = new ValidateCode(); 
// 獲取驗(yàn)證碼(字符串),寫入Session 
context.Session["SomeValidateCode"] = validateCode.GetString(); 
// 輸出驗(yàn)證碼(圖片) 
context.Response.BinaryWrite(validateCode.GetByteArray()); 
}

PS?: Je me souviens que lorsque j'ai commencé à travailler, le code était très mal écrit (pire que maintenant, je l'utilisais habituellement directement lorsque j'en recevais une copie). du code. Je n'y ai jamais pensé. Pour modifier ou encapsuler le code, mon ma?tre m'a enseigné à cette époque et j'ai été très impressionné. Personnellement, je pense qu'il n'y a rien de mal à utiliser le code d'autres personnes. Tout d'abord, d'autres l'ont utilisé pour au moins prouver l'utilisabilité du code. De plus, avec un QI limité, certaines choses ne sont pas aussi bonnes que ce que pensent les autres. si vous voulez en profiter, mais vous ne devez pas utiliser aveuglément le code des autres. Utilisez-le simplement. Il est préférable d'apporter les modifications ou l'encapsulation nécessaires en fonction de votre situation réelle, même s'il ne s'agit que d'une simple couche. Bien s?r, encore une fois, si le projet est urgent, c'est évidemment une perte de temps. Bref, n'y pensez pas, utilisez-le dès que vous l'avez, assurez-vous au moins du code clé ou de la structure globale de. le code est clair.

Pour plus d'articles sur le code de vérification asp.net encapsulé, veuillez faire attention au site Web PHP chinois?!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment la correspondance du modèle en C # (par exemple, les expressions, les expressions de commutation) simplifient-elles la logique conditionnelle? Comment la correspondance du modèle en C # (par exemple, les expressions, les expressions de commutation) simplifient-elles la logique conditionnelle? Jun 14, 2025 am 12:27 AM

La correspondance de motifs en C # rend la logique conditionnelle plus concise et expressive à travers les expressions est et les expressions de commutation. 1. Utilisez l'expression IS pour effectuer des contr?les de type concis, tels que si (objectrings), et extraire les valeurs en même temps; 2. Utilisez des modes logiques (et, ou, non) pour simplifier les jugements conditionnels, tels que la valeur> 0 et

Quelle est la signification du mot clé de rendement en C # pour créer des itérateurs? Quelle est la signification du mot clé de rendement en C # pour créer des itérateurs? Jun 19, 2025 am 12:17 AM

TheyieldKeywordInc # SimplifieSiteratorCreationyByAutomAticygeneratingastateMArnEtHaTenablesLayEvaluation.1.itallowsreturningItemSonEatatimeusingyElDreturn, PausingExecutionbetweenEachItem, qui estsidéalforlargeordynynamicesences.yieldbreakCanbem, qui estsidéalforgargeordynamicSequences.yieldbreakCanbenem, qui estsidéal pour la réduction

Qu'est-ce que l'injection de dépendance (DI), et comment peut-elle être implémentée en C # (par exemple, en utilisant DI intégrée dans ASP.NET Core)? Qu'est-ce que l'injection de dépendance (DI), et comment peut-elle être implémentée en C # (par exemple, en utilisant DI intégrée dans ASP.NET Core)? Jun 30, 2025 am 02:06 AM

DependencyInjection (DI) Inc # IsadesignPatterntHatenhancesmodularité, testabilité et responsabilité par la fa?on dont les dépenses de contr?le

Quel est le but de l'interface iDisposable et de l'instruction d'utilisation en C # pour la gestion des ressources? Quel est le but de l'interface iDisposable et de l'instruction d'utilisation en C # pour la gestion des ressources? Jun 27, 2025 am 02:18 AM

Le r?le d'idisposable et de l'utilisation dans C # est de gérer efficacement et de manière déterministe des ressources non gérées. 1. IDisposable fournit la méthode Dispose (), afin que la classe puisse clairement définir comment libérer des ressources non gérées; 2. L'instruction d'utilisation garantit que Disser () est automatiquement appelé lorsque l'objet est hors de portée, simplifiant la gestion des ressources et évitant les fuites; 3. Lorsque vous l'utilisez, veuillez noter que l'objet doit implémenter iDisposable, peut déclarer plusieurs objets et utiliser toujours en utilisant pour des types tels que StreamReader; 4. Les meilleures pratiques courantes incluent ne pas s'appuyer sur les destructeurs pour nettoyer, gérer correctement les objets imbriqués et mettre en ?uvre le modèle de disposition (bool).

Comment les expressions de Lambda et Linq (Language Intégrée Intégrée) améliorent-elles la manipulation des données en C #? Comment les expressions de Lambda et Linq (Language Intégrée Intégrée) améliorent-elles la manipulation des données en C #? Jun 20, 2025 am 12:16 AM

LambdaExpressionsandLinqsimpplifyDatamanipulationIn # byenablingConcise, lisible et efficacecode.1.LambdaExpressionsallowinlineFunctionDctiondfinitions, faisant en sorte que

Comment Span  et Memory  peuvent-ils être utilisés en C # pour optimiser l'utilisation de la mémoire et réduire les allocations? Comment Span et Memory peuvent-ils être utilisés en C # pour optimiser l'utilisation de la mémoire et réduire les allocations? Jun 18, 2025 am 12:11 AM

Span et la mémoire améliorent les performances C # en réduisant l'allocation de mémoire. 1. Span évite la copie du tableau et fournit des références légères à la mémoire existante, ce qui convient aux protocoles binaires d'analyse, aux opérations de cha?ne et à la gestion des tampons haute performance; 2. La mémoire prend en charge le passage des tranches de mémoire sur les méthodes asynchrones, qui conviennent aux scénarios où des cycles de vie plus flexibles sont nécessaires; 3. Les deux réduisent la pression GC, optimisent les performances en réutilisant les tampons et en évitant la copie temporaire; 4. La portée est limitée à l'utilisation sur la pile et ne peut pas être stockée dans les classes ou utilisée dans des méthodes asynchrones. Soyez prudent pour éviter les opérations de réaffectation telles que Call.ToArray ().

Quels sont les types de référence (NRT) nullables en C # 8, et comment aident-ils à prévenir NullReferenceException? Quels sont les types de référence (NRT) nullables en C # 8, et comment aident-ils à prévenir NullReferenceException? Jun 21, 2025 am 12:36 AM

NullableReferenceTypes (NRTS) Inc # 8 HelpCatchNullReferenceExceptionErrorSatCompileTimeByMakingreferenceTySnon NullableByDefault, obligeant la disposition de laclaration

Quels sont les pièges ou les anti-motifs communs à éviter lors du développement avec C #? Quels sont les pièges ou les anti-motifs communs à éviter lors du développement avec C #? Jun 23, 2025 am 12:05 AM

Quatre problèmes "anti-motifs" courants dans le développement C # doivent être évités. Premièrement, l'utilisation déraisonnable d'Async / Await conduit à des impasses ou à une dégradation des performances. Nous devons adhérer au principe de l'asynchrone complète, configurer la configurationaWait (false) et standardiser la dénomination; Deuxièmement, une dépendance excessive à l'égard de la VAR affecte la lisibilité et déclare et unifie explicitement les spécifications de l'équipe lorsque le type n'est pas clair; Troisièmement, l'utilisation incorrecte de la gestion des dispositions et des ressources provoque des fuites, et l'instruction d'utilisation doit être utilisée correctement et le mode standard IDISPOSable doit être mis en ?uvre; Quatrièmement, l'abus des classes statiques ou des singletons provoque des difficultés de test, et la priorité devrait être accordée à l'injection de dépendance, à l'état sans état ou au cycle de vie géré par des conteneurs. éviter ces malentendus peut considérablement améliorer la qualité et la maintenance du code.

See all articles