وراثة من StreamWriter مع أصغر جهد ممكن
-
20-09-2019 - |
سؤال
أستخدم مكتبة خارجية تتيح تسجيل الدخول باستخدام StreamWriter - الآن أريد إضافة بعض المعالجة بناءً على محتوى التسجيل. كما أريد أن أتجنب أن أحلق من خلال ملف السجل ، أود أن أكتب فصلًا يرث من StreamWriter.
ما هي أفضل طريقة للوراثة من StreamWriter مع عدد قليل من عمليات إعادة تنفيذ الأساليب/المُنشئين؟
المحلول
لست متأكدًا مما تريد القيام به بالضبط ، ولكن إذا كنت تريد فقط فحص ما هو مكتوب في الدفق ، يمكنك القيام بذلك:
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);
}
}
نصائح أخرى
حدد المُنشئ استخدام المكتبة الخارجية وتنفيذه (أو فقط تنفيذها جميعًا) ثم تحتاج فقط إلى تجاوز طريقة (طرق) الكتابة التي تستخدمها مكتبتك الخارجية.
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);
}
}
لا تنتمي إلى StackOverflow