Как Вы Создаете Свойство Зависимости Только для чтения?

Я вторые мнения, что необходимо выбрать итеративный метод согласно потребности. Я предложил бы Вас на самом деле не к когда-либо цикл через собственный компонент Array с for in структура. Это - путь медленнее и , как Chase Seibert, на которого указывают в данный момент назад, не совместимый с платформой Прототипа.

существует превосходное сравнительный тест на различных стилях цикличного выполнения, что абсолютно необходимо смотреть на то, если Вы работаете с JavaScript. Не делайте ранней оптимизации, но необходимо сохранить тот материал где-нибудь позади головы.

я использовал бы for in для получения всех свойств объекта, который особенно полезен при отладке сценариев. Например, мне нравится иметь эту строку, удобную, когда я исследую незнакомый объект:

l = ''; for (m in obj) { l += m + ' => ' + obj[m] + '\n' } console.log(l);

Это выводит содержание целого объекта (вместе с телами метода) к моему журналу Firebug. Очень удобный.

63
задан akjoshi 19 January 2013 в 19:06
поделиться

1 ответ

На самом деле это просто (через RegisterReadOnly ):

public class OwnerClass : DependencyObject // or DependencyObject inheritor
{
    private static readonly DependencyPropertyKey ReadOnlyPropPropertyKey
        = DependencyProperty.RegisterReadOnly("ReadOnlyProp", typeof(int), typeof(OwnerClass),
            new FrameworkPropertyMetadata(default(int),
                FrameworkPropertyMetadataOptions.None));

    public static readonly DependencyProperty ReadOnlyPropProperty
        = ReadOnlyPropPropertyKey.DependencyProperty;

    public int ReadOnlyProp
    {
        get { return (int)GetValue(ReadOnlyPropProperty); }
        protected set { SetValue(ReadOnlyPropPropertyKey, value); }
    }

    //your other code here ...
}

Вы используете ключ только тогда, когда вы устанавливаете значение в частном / защищенном / внутреннем коде. Благодаря защищенному установщику ReadOnlyProp это прозрачно для вас.

137
ответ дан 24 November 2019 в 16:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: