Приветствую вас, пытаюсь понять как работают Generic методы, типы и прочее
имеется вот такой код
public static ReadType MyMethod<ReadType>(int MyValue1, int MyValue2)
{
byte[] bytes = new[8]{ MyValue1, MyValue2};
return (ReadType)Convert.ChangeType(bytes, typeof(ReadType));
}
Использовать я его пытаюсь так
label1.Text = MyMethod<int>(100, 100).ToString();
Но вылетает исключение
Объект должен реализовывать интерфейс IConvertible.
Я знаю что можно использовать возращаемый тип
dynamic
Но мне хочется всё же понять, как решить эту проблему, пытался делать вот так
ReadType MyMethod<ReadType>(int MyValue1, int MyValue2) where ReadType : IConvertible
Никаких плодов это не принесло, я MSDN перешерстил, подобные вопросы искал, но не могу решить свою проблему, как же всё таки реализовать этот интерфейс и решить эту проблему?
Очень надеюсь на подробное описание и решение данной проблемы.
Смотрим, что говорится на MSDN о Convert.ChangeType
:
public static object ChangeType
(
object value,
Type conversionType
)
value
Type: System.Object
Объект, реализующий интерфейс IConvertible.
Смотрим на описание класса Array
:
public abstract class Array : ICloneable, IList, ICollection,
IEnumerable, IStructuralComparable, IStructuralEquatable
Реализует массив интерфейс IConvertible
? Нет, не реализует. Следовательно, его нельзя использовать в качестве первого параметра.
То есть ошибка выдается не о том типе, в который Вы пытаетесь конвертировать данные, а об исходном byte[]
.
Да и как вообще Вы представляете преобразование 8 байт (64 бита) в Int32 (32 бита)? В каком порядке эти байты должны обрабатываться? Что с ними должно происходить при преобразовании? Всё это знаете Вы - но никак не разработчики языка. Это не очевидное преобразование.
Используйте какую-то другую логику преобразования вместо Convert.ChangeType
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Встретил в задании формулировку: Advertise-запросГугл не даёт никакой информации
Мне надо в одном списке хранить как общие параметры, так и пользовательские параметрыДля этого я использую вложенные классы