я унаследовал следующую структуру инициализации, где мой параметр представляет собой double
номер:Кастинг объект в два раза
public void Init(IDictionary<string, object> dict)
{
double val = (double)dict[MY_KEY];
}
Это прекрасно работает, если объект был действительно double
, например,
dict[MY_KEY] = 1.0;
но ломается, когда объект является другим цифровым типом, например. int
, как показано ниже:
dict[MY_KEY] = 1;
Как я могу изменить свой метод так, что он работает со всеми числовыми типами, которые могут быть неявно преобразованы в double
?
Если это возможно, я настоятельно рекомендую вам не ставить себя в такое положение для начала. Если вам нужно двойное, заставляйте людей вводить двойное число, а не принимать любой возможный тип числа и пытаться превратить его в двойное. В противном случае вы настроитесь на мир. Имейте в виду, что все числовые типы имеют различный набор чисел, которые они могут представлять. Кто-то может ввести число, которое, чтобы быть преобразованным в двойное, требует потери информации, чего они не ожидают. Ответы ниже кажутся волшебной пулей, но они просто нет. – Servy