هل تحكم مجموعة FXCOP من خلال الحكم غير متوافق مع إطار الربيع؟

StackOverflow https://stackoverflow.com/questions/206746

  •  03-07-2019
  •  | 
  •  

سؤال

FXCOP لديه CollectionPropertiesshouldbereadonly هذا يشتكي إذا كان لدى فصلك نوعًا من خاصية التجميع التي يمكن للعملاء تعيينها. بدلاً من ذلك ، فإنه يشير إلى جعل العقار قراءة فقط وتزويد طريقة clear () وإضافة () أو addrange () لتغيير محتويات المجموعة.

أوافق على أن هذا يجعل واجهة أنظف وأكثر تحكمًا ، لكنني أوافق على جعل هذه الواجهة تعمل مع إطار الربيع. إذا كنت أرغب في تكوين كائن مع مجموعة من المتعاونين ، فيجب عليّ فضح بعض خاصية التجميع لضخ المتعاونين فيها. لقد نظرت من خلال وثائق الربيع, ، ولا يمكنني رؤية أي طريقة لإخبار Spring بالاتصال بالطريقة Addrange () ، هل أفتقد شيئًا؟

في الوقت الحالي ، سأستبعد التحذير بملاحظة أنه من الضروري تكوين الربيع.

تحديث: بما أنني لم أحصل على أي قرارات هنا في الشهرين الماضيين ، فقد نشرت نفس السؤال على منتدى FXCOP.

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

المحلول

إذا كانت خاصية المجموعة تحتوي فقط على Getter ، فسوف نفترض أن الأنماط الموصى بها من FXCOP يتم استخدامها وإضافتها إلى المجموعة. النمط الأول مدعوم أيضا.

بالنسبة للمجموعات العامة ، هذا يعمل فقط إذا كانت الخاصية المكشوفة من النوع Ilist. لدينا قضية جيرا للإصدار التالي لإصلاح هذا. راجع للشغل ، هذا نمط شائع للغاية في مكتبات الفصل الأساسي (كما تعلمون على الأرجح ...) وهو المكان الذي واجهنا فيه لأول مرة الحاجة إلى دعم هذا النمط في .NET 1.1 (الذي لا يعاني من القيد المذكور أعلاه) .

هتاف ، مارك

نصائح أخرى

هل المشكلة سيئة كما تعتقد؟ ما أفهمه هو أن FXCOP ستشكو إذا كان لديك خاصية قراءة/كتابة مثل هذا:

public List<Foo> Items { get; set; }

... لأن مستخدمي فصلك سيتمكنون من القيام بذلك:

myInstance.Items = new List<Foo>();

من الواضح أنك لا تريد أن يقوم مستخدمو الفصل الخاص بك بإعادة تعيين القائمة بالكامل. لذلك يوصي FXCOP هذا النمط:

private List<Foo> _items = new List<Foo>();
public List<Foo> Items { get { return _items; } }

لذا ، يمكن لمستخدمي الفصل الدراسي الآن إضافة وإزالة العناصر من قائمتك ، بدلاً من الكتابة فوقها بمثيل جديد من القائمة.

كيف تنفذ spring.net خصائص مجموعتها؟ هل يقرأون/يكتبون حقًا مثل مثالي الأول؟ إذا كان الأمر كذلك ، فسيكون من المثير للاهتمام رؤية حالات الاستخدام الخاصة بهم لمثل هذا النمط ، لأنه لا يبدو صحيحًا.

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