Декларация о чистоте собственности - PullRequest
3 голосов
/ 21 декабря 2011

Я работаю над кодом для привязки представления Silverlight к докладчику в шаблоне MVP. В данном конкретном случае это очень длинное упражнение - делать это снова и снова:

Модель:

public bool MyBoolean
{
    get { return _myThingy.MyBoolean; }
    set { _myThingy.MyBoolean = value; }
}

Presenter:

public bool MyBoolean
{
    get { return _model.MyBoolean; }
    set { _model.MyBoolean = value; }
}

Ясно, что в этом примере с презентатором можно было бы покончить с , но есть несколько вещей, которые стоят того, чтобы иметь оба в этом случае, так как не каждое свойство похоже на это и наш стандарт кодирования требует наличия Model, View и Presenter для каждого окна / страницы / пользовательского элемента управления.

Мой настоящий вопрос заключается в том, что я действительно хотел бы иметь возможность сделать что-то вроде этого:

Модель:

public bool MyBoolean -> _myThingy.MyBoolean;

Presenter:

public bool MyBoolean -> _model.MyBoolean;

, где -> - это «оператор свойства связывания» или какое-то подобное имя - по сути, синтаксический сахар для первого бита кода. Уже есть что-то подобное? Если нет, есть ли более чистый способ сделать то, что я делаю?

1 Ответ

5 голосов
/ 21 декабря 2011

Есть ли что-то подобное уже? Если нет, есть ли более чистый способ сделать то, что я делаю?

Нет. С точки зрения кода, то, что у вас есть, вероятно, лучший вариант. C # не предоставляет этот тип функциональности ни в одной функции.

Тем не менее, вы можете использовать инструменты, чтобы сделать это проще. Например, шаблон Resharper может легко сделать создание одного из них очень быстрым. Второй можно превратить в шаблон, который просто потребует набрать что-то вроде (при условии, что «ptprop» в качестве ключевого слова):

ptprop{TAB}bool{TAB}MyBoolean{Tab}_model{Enter}

Это упростит ваши усилия по разработке, хотя код будет идентичным ...

...