Свойства - немного больше, чем синтаксический сахар для методов set / get, и, AFAIK, нет никакого способа получить какую-либо ссылку на него (что-то похожее на связанный метод, я полагаю).
Лучший обходной путь, который я могу придумать, который требует 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 ++, этот пример трудно пройти.