J'utilise une bibliothèque externe qui permet la journalisation à l'aide de StreamWriter. Maintenant, je souhaite ajouter un traitement basé sur le contenu de la journalisation. Comme je veux éviter de faire une boucle dans le fichier journal, je voudrais écrire une classe qui hérite de StreamWriter.
Quelle est la meilleure façon d'hériter de StreamWriter avec aussi peu de ré-implémentations de méthodes/constructeurs?Hériter de StreamWriter avec le plus petit effort possible
Répondre
Je ne suis pas sûr de ce que vous voulez faire exactement, mais si vous voulez seulement vérifier ce qui est écrit dans le flux, vous pouvez le faire:
public class CustomStreamWriter : StreamWriter
{
public CustomStreamWriter(Stream stream)
: base(stream)
{}
public override void Write(string value)
{
//Inspect the value and do something
base.Write(value);
}
}
Vous voulez juste que vous ayez seulement à écrire Write (char) car tous les autres appels à Write finissent là-bas, moins d'effort que de surcharger chaque méthode d'écriture. et si vous appelez base.Write() sur l'autre méthode, vous pourriez écrire les mêmes données plus d'une fois (ex: call to write (base) call (char)) – Mel
Déterminer le constructeur de la bibliothèque externe utilisez et implémentez-le (ou mettez-les simplement en œuvre) et vous n'avez plus qu'à remplacer les méthodes d'écriture utilisées par votre bibliothèque externe.
public class Class1 : StreamWriter
{
public Class1(Stream stream)
: base(stream)
{
}
public Class1(Stream stream, Encoding encoding)
: base(stream, encoding)
{
}
public Class1(Stream stream, Encoding encoding, int bufferSize)
: base(stream, encoding, bufferSize)
{
}
public Class1(string path)
: base(path)
{
}
public Class1(string path, bool append)
: base(path, append)
{
}
public Class1(string path, bool append, Encoding encoding)
: base(path, append, encoding)
{
}
public Class1(string path, bool append, Encoding encoding, int bufferSize)
: base(path, append, encoding, bufferSize)
{
}
public override void Write(string value)
{
base.Write(value);
}
}
- 1. Java Algo à Trouver le plus petit et le deuxième plus petit nombre dans la liste
- 2. Rendre .war plus petit
- 3. Trouver le plus petit numéro utilisé
- 4. Un grand xslt plus petit plus granulaire
- 5. comment rendre ICU plus petit?
- 6. Plus petit nœud de quadtree de limitation
- 7. StreamWriter vers le type de référence
- 8. records de comptage par le plus petit netblock (intervalle)
- 9. Quel est le plus petit format de fichier audio?
- 10. Comment calculer le plus petit octet de signal en Ruby
- 11. iPhone Modal View Plus petit que l'écran
- 12. Des pointeurs vers le plus petit runtime CLI?
- 13. Cookies: Plus mais plus petit ou moins mais plus grand?
- 14. Trouvez le plus petit numéro inutilisé dans SQL Server
- 15. Ajouter un sous-menu plus petit avec une nouvelle origine
- 16. IE div plus petit que 20 px?
- 17. Effort de prévision - quel est le rapport avec le temps nécessaire pour terminer les projets?
- 18. Comment copier un plus petit bitmap dans un plus grand?
- 19. Quelle est l'importance de sélectionner le plus petit type de données possible lors de la conception d'une base de données?
- 20. algorithme de classification meilleur effort de vecteur
- 21. nième plus petit élément d'un BST
- 22. C# streamwriter problème de mise en forme
- 23. Posible pour rendre ce code plus petit?
- 24. Manipulation Nybbles et plus petit dans C#
- 25. Plus gros qu'un char mais plus petit qu'un blob
- 26. copier plus petit tableau en tableau plus grand
- 27. Comment trouver le plus grand et le plus petit nombre dans un tableau en c
- 28. VB.NET StreamWriter Expression attendue
- 29. Lecture d'un serveur POP3 avec uniquement TcpClient et StreamWriter/StreamReader
- 30. Jquery: existe-t-il un moyen de créer des fonctions dans mon petit code pour le rendre plus rapide/plus simple/plus petit?
Quel comportement voulez-vous changer de StreamWriter dans votre classe dérivée? –
Malheureusement, je ne sais pas avec certitude quelle implémentation réelle de write est appelée - mon estimation est juste Write (string). Je veux essentiellement garder tout dans le fichier, mais ajouter un peu de manipulation pour vérifier si le contenu journalisé contient x. Je préférerais cela à l'écriture d'un programme séparé qui lit périodiquement le journal car il serait plus performant. – weismat
Ensuite, utilisez ma réponse mais remplacez toute la méthode Write et placez un point d'arrêt pour voir ce qui est appelé dans votre scénario spécifique. –