0

I am converting code to use the new Microsoft Portable class library. The following code is unhappy and I am unsure how to fix it.

            Dim keySerializer As New Xml.Serialization.XmlSerializer(GetType(TKey))
        Dim valSerializer As New Xml.Serialization.XmlSerializer(GetType(T))
        Dim key As TKey
        Dim val As T

        If reader.IsEmptyElement = True Then
            Return
        End If

        reader.Read()

        While reader.NodeType <> Xml.XmlNodeType.EndElement
            reader.ReadStartElement("item")

            reader.ReadStartElement("key")
            key = CType(keySerializer.Deserialize(reader), TKey) '<<< Error here
            reader.ReadEndElement()

            reader.ReadStartElement("value")
            val = CType(keySerializer.Deserialize(reader), T) '<<< and here
            reader.ReadEndElement()

            Add(key, val)

            reader.ReadEndElement()
            reader.MoveToContent()

        End While

        reader.ReadEndElement()

Requested operation is not available because the runtime library function Microsoft.visubalBasic.CompilerServices.Conversions is not defined.

Anyone solved this?

Robert Beaubien
  • 3,126
  • 4
  • 22
  • 29
  • 1
    Use DirectCast instead of CType. More here: http://stackoverflow.com/a/2704915/17034 – Hans Passant Dec 03 '12 at 16:54
  • 1
    Excellent. Thank you Hans. It should be noted that DirectCast doesn't work EXACTLY the same as CType and Sometimes Convert.ChangeType() would be a better replacement function. – Robert Beaubien Dec 03 '12 at 18:02

0 Answers0