Установка значения по умолчанию для свойств непостоянных типов?

StackOverflow https://stackoverflow.com/questions/810726

Вопрос

У меня есть компонент Windows.Forms, который имеет свойство "mySize", которое возвращает структуру размера.Мое намерение состояло в том, чтобы это свойство автоматически вычисляло возвращаемый mySize на основе размера компонента, если только mySize не был явно задан, и в этом случае возвращайте установленное значение mySize .К сожалению, теперь, когда я встраиваю компонент в форму, разработчик Windows Forms решил начать явно генерировать и устанавливать значение для свойства mySize, что меня сильно сбивает с толку.

Поэтому мне нужно установить значение по умолчанию, чтобы Дизайнер ушел и оставил меня в покое.

Я прочитал ответы, касающиеся System.ComponentModel.defaultValue , поэтому я знаю, что я должен вручную установить значение для свойства в конструкторе, но ответы и документация, которые я нашел, касаются только установки значения по умолчанию False , константы.

Структура размера не является константой, и поэтому компилятор VB сходит с ума, говоря мне, что я не могу установить Size в качестве defaultValue для свойства типа Size, потому что размеры не являются константами.

От этого у меня болит мозг.

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

Примечание:Я не использую mySize как какую-то ненормальную попытку переопределить свойство Size (которое имеет значение по умолчанию 150x150, так что, похоже, что-то может установить значения по умолчанию для размеров);mySize - это просто некоторое значение размера, требуемое классом.

Это было полезно?

Решение

Вместо применения атрибута defaultValue напишите следующие два метода:

bool ShouldSerializemySize() { ... }
void ResetmySize() { ... }

В ShouldSerializemySize верните true, если значение должно быть сериализовано в код.В ResetmySize верните свойству значение по умолчанию.

Разработчик компонентов автоматически подберет эти методы с помощью отражения.

Более подробная информация здесь:http://msdn.microsoft.com/en-us/library/53b8022e (ПРОТИВ 71).aspx

Другие советы

Я заметил, что на самом деле есть конкретный пример, приведенный для установки значения по умолчанию для размера типа в разделе Содержимого сообщества Страница MSDN defaultValue по умолчанию, который предлагает использовать конструктор defaultValue , описанный на эта страница.

К сожалению, хотя приведенный там пример верен в том смысле, что он работает, мне кажется, что документация MSDN естественным образом никого не приведет к этому ответу.

Я собираюсь установить ответ альбахари в качестве ответа на этот вопрос (потому что его ответ, по крайней мере, имеет какой-то смысл) и оставить этот пример здесь для полноты картины.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top