Назначение целого числа двойнику очень легально.Почему присваивание целочисленного значения двойным прикрепленным свойствам дает ошибку?
Если мы можем сделать
double d = 3;
d присваивается 3.0
, но почему это не удается в Прикрепленные свойства?
Сценарий
Я создал вложенное свойство
public static readonly DependencyProperty ActualWidthBeforeHidingProperty =
DependencyProperty.RegisterAttached("ActualWidthBeforeHiding",
typeof(double), typeof(MainWindow), new FrameworkPropertyMetadata(0));
public static double GetActualWidthBeforeHiding(DependencyObject element)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
return Convert.ToDouble(element.GetValue(ActualWidthBeforeHidingProperty));
}
public static void SetActualWidthBeforeHiding(DependencyObject element, double value)
{
if (element == null)
{
throw new ArgumentNullException("element");
}
element.SetValue(ActualWidthBeforeHidingProperty, value);
}
Я скомпилировал код. Ошибка компиляции не была.
Но когда я попытался запустить приложение это дало ошибку
В приведенном выше коде я случайно назначенный 0 в new FrameworkPropertyMetadata(0)
и код побежал успешно.
Но у меня создалось впечатление, что вы можете назначить DataType с меньшей точностью (т. Е. Integer) с DataType с большей точностью (т. Е. 0.0 Double)?
Тогда почему это отклонение от базовой концепции программирования для свойств зависимостей?
Вы могли бы ожидать, что это будет, но это не так. Вы должны назначить ожидаемый тип. И если это 'double', либо назначить 3.0 или (двойной) 3. –
@ bash.d: Я знаю это, но почему это. Присвоение целочисленного значения двойному закону. –
Я часто сталкивался с этой ошибкой, что в конечном итоге редактировал мои фрагменты кода для зависимостей и вложенных свойств, поэтому значение по умолчанию всегда 'default ($ type $)' ... –