سؤال

لدي الرمز التالي:

[SuppressMessage( "Microsoft.Performance", "CA1800:DoNotCastUnnecessarily" )]
private static void SetTestConnectionString( Component table )
{
    if( table is Object1 )
    {
        fn1( (Object1)table );
    }
    // ... a few more if statements for different Classes
}

ومع ذلك ، عندما أركض FxCop على هذه الفئة/الوظيفة ، لا يزال يولد التحذير

تحذير: CA1800: microsoft.performance: "الجدول" ، المعلمة ، يتم إلقاؤه لتكوين "XXX" عدة مرات في الطريقة "CCC.SetTESTConnectionString (مكون)". قم بتخزين Cache نتيجة للمشغل "AS" أو المصبوب المباشر من أجل القضاء على تعليمات CASTCLASS الزائدة عن الحاجة.

أعلم أنه يمكنني إعادة تشكيل هذا الرمز لإزالة التحذير ، ومع ذلك فإنه سيجعل الكود أقل قابلية للقراءة. في هذه الحالة ، أود قمع هذه الرسالة الواحدة على هذه الوظيفة.

ما الخطأ الذي افعله؟

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

المحلول

تحقق مما إذا كنت قد حددت رمز المعالج المسبق Code_analysis في خصائص مشروعك.

القي نظرة على: http://msdn.microsoft.com/en-us/library/system.diagnostics.codeanalysis.SuppressMessageAttribute.aspx

نصائح أخرى

private static void SetTestConnectionString( Component table )
{
    if( table.GetType() == typeof(Object1) )
    {
        Object1 object1 = (Object1)table;
        fn1( object1 );
    }
    // ... a few more if statements for different Classes
}

أظن أن ملف مشروعك يحتوي على أن Debugtype ليس. عند تعيين debugtype لا شيء ، لن يكتشف رمز القمع. حتى تتمكن من تغيير التصحيح إلى كامل ، لأنه سيكتشف رمز القمع بشكل صحيح.

<DebugType>full</DebugType>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top