هل من المقبول إلى "استعارة" التبعية لا علاقة لها خصائص من الطبقات ؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

أنا أكتب الدرجة التي تجعل بعض المحتوى في WPF و أريد أن تعطي المستخدم التحكم في كيفية المحتوى المقدمة.التقديم في الغالب التمسيد خطوط, لذلك قررت أن ننظر إلى النظام.يقوم نظام ويندوز.أشكال.الأشكال.خط فئة للحصول على فكرة عن ما خصائص كنت قد ترغب في تنفيذها.وهذا أدى بي إلى تنفيذ معظم StrokeXXXX خصائص و هناك الكثير من drudgework منذ بعضها يتطلب الفوقية تؤثر على التقديم.

زميل اقترح علي مجرد "استعارة" خصائص من شكل مثل هذا:

Shape.StrokeThicknessProperty.AddOwner(typeof(MyType));

هذا يبدو وكأنه فكرة جيدة.اعتقدت أنه من خلال القيام بذلك قد تفقد القدرة على تحديد الإكراه والممتلكات تغير الاسترجاعات ، ولكن يبدو أن تفرط أن يأخذ PropertyMetadata يسمح بذلك.الجانب السلبي الوحيد الذي أستطيع أن أرى إذا كان تنفيذ الشكل التغييرات سوف تؤثر على الطبقة, ولكن أنا غير متأكد من كيفية غالبا ما كنت تتوقع .صافي واجهات لتغيير كبير.

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

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

المحلول

أنها آمنة جدا ومفيدة إلى الاقتراض DPs...قراءة التالية مشاركة بواسطة Dr WPF حول هذا الموضوع!

هنا هي عدد قليل من "نصائح" انه تقدم:

  • يجب أن تعرف دائما ما صاحب الدرجة لا مع أي ممتلكات يمكنك استعارة.
  • يجب أن تدفع الانتباه إلى القيم الافتراضية و الميراث.في بعض الأحيان تحتاج منطقي الملكية مع القيمة الافتراضية true...أوقات أخرى قد ترغب في القيمة الافتراضية false.في بعض الأحيان تحتاج خاصية أن يرث...وأحيانا أخرى كنت صراحة لا أريد الميراث.(الاقتراض خاصية مثل TextElement.حجم الخط قد يفسد الأمور أقل في الشجرة.)
  • صاحب الصف في بعض الأحيان قد تحدد PropertyChangedCallback التي سوف تتداخل مع قدرتك على استخدام العقار كما يحلو لك.تعرف دائما ما صاحب الدرجة لا مع مكان الإقامة.
  • صاحب الدرجة قد توفر التحقق من صحة الروتين العقار الذي يمنعك من دخول قيمة كنت تريد تحديد.مرة أخرى, تعرف دائما ما صاحب الدرجة لا مع مكان الإقامة.الخاصية قد تكون مسجلة بطريقة يجعلها مكلفة perf الحكيم ، مثل FixedPage.السفلي الذي يبطل الأصل في ترتيب في أي وقت تغيير الخاصية على كائن.في بعض الأحيان قد صراحة أريد هذا السلوك...مرة أخرى أنها سوف فقط دون داع يسبب تخطيط يمر.مرة أخرى, تعرف دائما ما صاحب الدرجة لا مع مكان الإقامة.
  • إذا كنت تستخدم خاصية في سيناريو حيث الإطار نفسه يحاول استخدام الممتلكات (مثل TextSearch.TextPath على ItemsControl), كنت مسؤولا عن لتجد نفسك في خلاف مع الإطار.

نصائح أخرى

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

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