В общем случае, как конвертировать данные одного типа в данные другого типа

-5

Работайте на С#, В общем случае, как не работает с типами значений (например, int). Хотите метод расширения для всех типов данных, таких как: int, long, string.conversion method ниже

public static T Translate<T>(this T inputNumber) where T : class
{
return inputNumber.ToString()
.Replace("1", "1")
.Replace("2", "2")
.Replace("3", "3")
.Replace("4", "4")
.Replace("5", "5")
.Replace("6", "6")
.Replace("7", "7")
.Replace("8", "8")
.Replace("9", "9")
.Replace("0", "0") as T;
}

var result= 2.Translate<longTypeData>();

хотите получить данные длинного типа в переменной результата.

спросил(а) 2017-02-10T13:01:00+03:00 3 года, 1 месяц назад
0
63

Не совсем понятно, что вы пытаетесь сделать. Но если вы хотите, чтобы эта функция использовалась как какой-то конвертер, я бы передал два общих аргумента типа в:

public static T Translate<Q, T>(this Q inputNumber) {
string value = TypeDescriptor.GetConverter(typeof(Q)).ConvertToString(inputNumber);

string replacedValue = value.ToString()
.Replace("1", "1")
.Replace("2", "2")
.Replace("3", "3")
.Replace("4", "4")
.Replace("5", "5")
.Replace("6", "6")
.Replace("7", "7")
.Replace("8", "8")
.Replace("9", "9")
.Replace("0", "0");

return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(replacedValue);
}

Позже вы можете использовать его так:

int result = "444".Translate<string, int>();

Но имейте в виду: передача недопустимых комбинаций типов приведет к возникновению исключения!

ответил(а) 2017-02-13T00:34:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема