C# Получить объект вызвавший getter свойства

297
23 марта 2017, 18:01

Здравствуйте!
У меня возникла проблема "красивого" способа изменения настроек "на лету". Наример:

private string _text;
public string SampleTextProp
{
    get
    {
        return _text;
    }
    set
    {
        _text = value;
    }
}
textBlock1.Text = SampleTextProp;

И вопрос: Есть ли возможность внутри геттера SampleTextProp получить объект textBlock1.Text, чтобы позже использовать его? В сеттере например. То есть мне нужно получить объект, который вызвал геттер. Надеюсь я понятно выразился... Спасибо большое!

Update: Для чего мне это нужно.
Есть класс хранящий в себе настройки для приложения представленные как свойства. По мере написания программы я применяю эти свойства к различным полям или свойствам других объектов. Но эти настройки будут применяться только при запуске программы, а мне надо видеть изменения во время исполнения. В тоже время я не хочу вручную связывать настройку и объект применяющий её (windowBorder.BorderThickness = Settings.Interface.BorderThickness.GetValue(windowBorder) или как-то так)

Я хотел чтобы можно было просто вызвать свойство и всё. А класс его описывающий самостоятельно получил бы вызывающий объект, запомнил, и при последующем изменении свойства, автоматически применил новое значение ко всем ранее вызывавшим это свойство объектам. Фух

Answer 1

То, что вам нужно, называется "дата-биндинг" (data binding, по русски - привязка данных) и идет рука об руку с шаблоном проектирования MVVM (Model - View - View Model).

Для WinForms это делается через вкладку свойств, далее - пункт (ApplicationSettings) для привязки настроек или пункт (DataBindings) для привязки источника данных.

В WPF это делается через указание в разметке конструкции {Binding}:

BorderThickness="{Binding BorderThickness, Source={x:Static Settings.Default}}"

Если вы используете не стандартный класс настроек, а пишите свой - не забудьте реализовать интерфейс INotifyPropertyChanged

Answer 2

Нет. Никак нельзя.

При присвоении значения в любую пропертю ты передаешь ЛИШЬ значение проперти.

Но ты можешь написать метод который бы сразу обьект и из него доставал бы текст,если для тебя это важно.

READ ALSO
Как заблокировать ячейку в phpexcel?

Как заблокировать ячейку в phpexcel?

Я использую библиотеку PHPExcelПробую заблокировать от редактирования ячейку вот так:

337
Как сделать загрузку нескольких img в laravel?

Как сделать загрузку нескольких img в laravel?

Есть вот такой вот код загрузки img: routes/webphp

310
Virtuemart вывод дополнительных полей

Virtuemart вывод дополнительных полей

Помогите вывести дополнительные поляВывожу поля на странице категории кодом

356
Не могу настроить htaccess на субдиректорию

Не могу настроить htaccess на субдиректорию

Здравствуйте, есть проект на yii framework, в нем есть папка, в которой лежит отдельный проект со своим репозиториемПри заходе на project

257