سؤال

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

وكيف أفعل هذا؟

مثال:

<je:myControl runat="server" id="myControl" showBox="False">

وأريد أن النظام إما كسر أو تعيين الافتراضي إلى "true" إذا ما تركت showBox للخروج من هذا الإعلان.

وشكرا!

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

المحلول

وتحديد الممتلكات الخاصة بك مع قيمها الافتراضية مثل ما يلي:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
}

وأو في منشئ التحكم الخاصة بك، وتعيين القيم الافتراضية:

public MyControl()
{
    _ShowBox = false;
}

وأو استثناء رمي إذا لم يكن تعيين:

private bool _ShowBox = false;
public bool ShowBox
{
    set { _ShowBox = value; }
    get { return _ShowBox; }
}

نصائح أخرى

وأعرف أنني في وقت متأخر ولكن أردت فقط أن أشير إلى أن

[DefaultValue(false)]

ولن تعيين السمة إلى false. انظر: http://msdn.microsoft.com/en-us /library/system.componentmodel.defaultvalueattribute.aspx . وتقول:

وتابع أن "DefaultValueAttribute لا يسبب عضوا ليتم تهيئتها تلقائيا مع قيمة السمة. يجب تعيين القيمة الأولية في التعليمات البرمجية."

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

ومجرد تعيين القيمة الافتراضية المطلوب، عندما يعلن متغير:

class myControl
{
    private bool _showBox = true;

    [PersistenceMode(PersistenceMode.Attribute), DefaultValue(false)]
    public bool showBox
    {
        get { return _showBox; }
        set { _showBox = value; }
    }
}

والاختياري يمكنك إضافة DefaultValueAttribute لمصمم.

وReSharper يوصي باستخدام الملكية لصناعة السيارات، ووضع القيمة الافتراضية في منشئ، كما يلي:

public class MyControl
{
  public MyControl()
  {
    ShowBox = true;
  }

  public bool ShowBox { get; set; }
}  
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top