سؤال

أستخدم مكتبة خارجية تتيح تسجيل الدخول باستخدام 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);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top