يتم تزويدك بمقتطف التعليمات البرمجية الذي يتضمن مُنشئًا للفئة `OpenFuncInterceptedProxyBuilder`. تحتاج إلى تنفيذ طريقة داخل هذه الفئة لتلبية المتطلبات التالية:

1. توقيع الطريقة: قم بتنفيذ طريقة تسمى "BuildProxy" بالتوقيع التالي:
   ```csharp
   public T BuildProxy<T>(Func<T> targetFactory) حيث T: class;
   ```
   
2. وظيفة الطريقة: يجب أن تقوم طريقة "BuildProxy" بإرجاع كائن وكيل ينفذ الواجهة "T" ويعترض استدعاءات الطريقة الخاصة بها. يجب أن يستخدم كائن الوكيل "targetFactory" المقدم لإنشاء الكائن الهدف عند الضرورة.

3. إنشاء الوكيل: يجب إنشاء كائن الوكيل باستخدام مثيل "IProxyGenerator" المخزن في الفئة "OpenFuncInterceptedProxyBuilder". يتم تمرير هذا المولد كمعلمة إلى منشئ الفئة.

4. المعترض: يجب أن يستخدم كائن الوكيل المعترض الذي تم إرجاعه بواسطة وظيفة "interceptorFactory" لاعتراض استدعاءات الطريقة. يجب إنشاء المعترض مرة واحدة فقط عند إنشاء كائن الوكيل. افترض أن المعترض يطبق واجهة "IInterceptor".

5. القيود: يجب أن يعمل أسلوب "BuildProxy" فقط مع الواجهات، ويجب طرح استثناء وقت التشغيل إذا كان "T" المقدم عبارة عن فئة محددة أو فئة مجردة.

تحتاج إلى تنفيذ أسلوب "BuildProxy" وأي أعضاء ضروريين آخرين في فئة "OpenFuncInterceptedProxyBuilder" للوفاء بالمتطلبات المحددة.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}