يمكن أن تأخذ عناصر تحكم الويب ASP.NET في أي شيء في المنشئ؟

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

سؤال

أريد أن أحصل على تحكم آمن ولكن أرغب أيضا في تمديد الزر الموجود أو TextBox يوفر إطار ASP.NET. لذلك سوف نصف بلدي ينظر شيئا مثل:

public class MyTextBox : System.Web.UI.WebControls.TextBox

كنت أفكر في شيء مثل نمط استراتيجية للقيام بذلك، ولكن لست متأكدا من كيفية تمريره في ISECURECONTROL في الطاولة أو ربما طريقة INIT أو أي شيء؟

قد أكون جاهدا على سؤالي. أعتقد أنني قد أكون قادرا على تجاوز ONINIT أو ONPREINIT أو شيء ما وإنشاءه وتمريه، لكنه لم يكن متأكدا مما إذا كانت هناك طريقة لتمريرها مباشرة بطريقة أو بأخرى في مكان بطريقة أو بأخرى؟

override OnInit()
{
  secureControl = new MySecureControl();
}

override OnRender()
{
  if(secureControl.CanRender)
    base.OnRender();
}

هل هناك طريقة أفضل؟ أو هل سأحل مشكلتي الخاصة هنا ...

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

المحلول

نعم، هذا إلى حد كبير. لهذا الوضع المحدد، أود أن أذهب. إذا كان لدى MySecurecontrol معلمات منشئتها الخاصة، فيمكنك النظر في حقن التبعية، ولكن هذا يعني بدلا من استخدام New، وسوف تستخدم شيئا مثل ObjectFactory.GetInstance <> أو easefactory.buildup (هذا) واستخدم حقن الممتلكات. لا تعرق ذلك :)

نصائح أخرى

لماذا لا تقوم MyTextBox فقط بتطبيق ISECURECONTROL؟

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