Почему ошибка времени компиляции для Control.StructProperty.Member = Value;
?
Рассмотрим следующее утверждение
this.Control.StructProperty.Value = 0;
StructProperty
- это свойство, поэтому сначала его получатель получитвыполнить, и, поскольку это структура и тип значения, она вернет копию структуры, и установка свойства для этой копии бесполезна / не работает.Он хорошо знает ситуацию и вместо компиляции сбивающего с толку нерабочего кода генерирует Ошибка компилятора CS1612 :
Невозможно изменить возвращаемое значение выражения, поскольку ононе переменная
Как создать рабочий код для свойства Struct?
Возможно, вы заметили, что нельзя присвоить this.Size.Width = 100
с тем жепричина.И способ, которым эта форма генерирует код для свойства Size
:
this.Size = new Size(100,100);
Вы также можете сгенерировать код для свойства таким же образом, реализовав дескриптор типа, производный от TypeConverter
, возвращая InstanceDescriptor
в методе ConvertTo
для генерации кода для вашего свойства структуры с использованием параметрического конструктора, который вы должны иметь для структуры.
В общем, я предлагаю использовать классы, а не структурыза такую недвижимость.