SetRestrictedTypes

ReportingEngine.SetRestrictedTypes method

يحدد الأنواع، وأي الأعضاء، وكذلك أعضاء الأنواع المشتقة التي يجب ألا يتمكن engine من الوصول إليها من خلال بناء جملة القالب.

public static void SetRestrictedTypes(params Type[] types)
معامليكتبوصف
typesType[]الأنواع التي سيتم تقييدها.

ملاحظات

يجب تعيين الأنواع المقيدة قبل إنشاء التقرير لأول مرة. بعدتقرير البناء عند استدعاء الأمر، لا يمكن تعديل الأنواع المقيدة، ويُطرح استثناء عند محاولة القيام بذلك. أفضل مكان لتعيين الأنواع المقيدة هو بدء تشغيل التطبيق.

لاحظ أن عددًا كبيرًا من الأنواع المقيدة قد يؤثر على الأداء، لذا من الأفضل تقييد تلك الأنواع فقط، حيث يكون الوصول إلى أعضائها حساسًا حقًا.

رمياتArgumentException في الحالات التالية:

-types لا شيء.

  • واحد منtypes العناصر هيباطل.

  • واحد منtypes تمثل العناصر نوعًا غير مرئي، أي نوع غير عام أو نوع متداخل عام يحتوي على نوع خارجي غير عام.

  • واحد منtypes العناصر تمثل نوع المصفوفة.

-types تحتوي على إدخالات مكررة.

أمثلة

يوضح كيفية رفض الوصول إلى أعضاء الأنواع التي تعتبر غير آمنة.

Document doc =
    DocumentHelper.CreateSimpleDocument(
        "<<var [typeVar = \"\".GetType().BaseType]>><<[typeVar]>>");

// لاحظ أنه لا يمكنك تعيين أنواع مقيدة أثناء أو بعد إنشاء تقرير.
ReportingEngine.SetRestrictedTypes(typeof(System.Type));
// لقد قمنا بتعيين خيار "AllowMissingMembers" لتجنب الاستثناءات أثناء بناء التقرير.
ReportingEngine engine = new ReportingEngine() { Options = ReportBuildOptions.AllowMissingMembers };
engine.BuildReport(doc, new object());

// نحصل على سلسلة فارغة لأننا لا نستطيع الوصول إلى طريقة GetType().
Assert.AreEqual(string.Empty, doc.GetText().Trim());

أنظر أيضا