سؤال

أنا أتعامل حاليًا مع مشكلة حيث لدي الكثير من الواجهات المكررة وتم إنشاء جميع تطبيقاتها بالوحدة.تحتوي هذه الفئات على بعض الأساليب التي تطرح استثناءات على قاعدة عادية وأردت إنشاء وكيل ديناميكي حول تلك الفئات حتى أتمكن من اكتشاف جميع الاستثناءات التي تحدث في الأساليب والتعامل معها في مكان آخر.

بينما ألعب مع Unity، أتساءل عما إذا كان من الممكن القيام بشيء كهذا باستخدام Unity Interception.

أي.قم بإنشاء الشفافية ProxyInterceptor وقم بلف كتلة محاولة الالتقاط حول استدعاء هذه الأساليب.هل هذا ممكن على الإطلاق أم أنني أسير في الاتجاه الخاطئ؟شكرًا

هل كانت مفيدة؟

المحلول

نعم، يعد اعتراض الوحدة (AOP) طريقة ممتازة للتعامل مع معالجة الاستثناءات.يمكنك إضافة جميع أنواع السلوك مثل:

  • الكتابة إلى ملف سجل أو سجل الأحداث
  • أرسل بريدا إلكترونيا
  • زيادة عداد الأداء
  • إعادة المحاولة التلقائية عند انتهاء المهلة أو استثناء القفل
  • إعادة رمي خطأ مختلف

سيبدو معالج المكالمات الخاص بك كما يلي:

public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    IMethodReturn result = getNext()(input, getNext);

    if (result.Exception != null)
    {
        // do something
    }

    return result;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top