Свойства - это не более чем синтаксический сахар для методов set/get, и, насколько мне известно, нет никакого способа зафиксировать какую-либо ссылку на один из них (я полагаю, что-то вроде связанного метода).
Лучший обходной путь, который я могу придумать, для которого требуется VS2010, - передать пару лямбда-выражений:
auto set = [=](bool b) { Box->Checked = b; };
auto get = [=]() -> bool { return Box->Checked; };
РЕДАКТИРОВАТЬ (поскольку у вас нет VS2010):
Конечно, вы можете вернуться к более причудливому соглашению о написании класса специального назначения:
public generic<typename T> interface class PropertyProxy
{
property T Field;
};
public ref class CheckBoxChecked : public PropertyProxy<bool>
{
public:
CheckBoxChecked(System::Windows::Forms::CheckBox^ box) : _box(box) { }
property bool Field
{
bool get() { return _box->Checked; };
void set(bool b) { _box->Checked = b; };
}
private:
System::Windows::Forms::CheckBox^ _box;
};
Если кто-нибудь когда-нибудь спросит вас, для чего хороши лямбда-выражения C++, трудно пройти мимо этого примера.
person
Marcelo Cantos
schedule
01.05.2010