Как говорится в сообщении об ошибке, вы не хотите присваивать string
значение " "
свойству double
.Это невозможно, так как string
никогда не будет double
.string
может использоваться для отображения a double
, но все равно это string
, который просто выглядит как double
.
Однако такую строку можно преобразовать в двойную:
string numberString = "5.7";
double number = double.Parse(numberString);
Обратите внимание, что приведенный выше фрагмент кода вызовет исключение, если numberString
не может быть преобразовано в двойное число, напримеркогда строка " "
.
Вы пытаетесь изменить Type свойства во время выполнения.Это невозможно, поскольку c # является строго типизированным языком.У вас не может быть класса, который выглядит как
class Foo
{
double Bar {get; set;}
}
, а затем волшебным образом преобразуется во время выполнения в
class Foo
{
string Bar {get; set;}
}
. Вы можете обойти это, используя object
или dynamic
в качестве типаBar
, но я настоятельно рекомендую не сделать это.Поскольку это обходит всю идею использования типов.В таком случае вы никогда не знаете, является ли Bar
a double
или string
.
Я не очень понимаю, почему вы этого хотите, но, на мой взгляд, это выглядит плохим дизайном и, возможно, подойдет другое решение.