Как DataSet знает, как анализировать элементы из XML-файлов? - PullRequest
1 голос
/ 16 декабря 2010

Во-первых, я говорю моему DataSet, как интерпретировать xml с помощью xsd-файла.Элементом вопроса xml должен быть KeyValuePair, соответствующая строка в моем xsd выглядит так:

<xs:element name="MyKeyValuePair" msdata:DataType="System.Collections.Generic.KeyValuePair`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:anyType" />

xsd загружается в DataSet следующим образом:

myDataSet.ReadXmlSchema(new StringReader(myXsdString));

Это прекрасно работаеткак я могу проверить в отладчике, что DataType столбца является правильным (у меня есть несколько строк, несколько удваивается, некоторые System.Guid и т. д. и - конечно, мой KeyValuePair).Затем я загружаю xml с помощью

myDataSet.ReadXml(new StringReader(myXmlString));

xml выглядит так:

<DataSet>
  <DataTable>
    <MyGuid>8F6FC345-5362-4518-B652-0CC3AD54901E</MyGuid>
    <MyKeyValuePair>[67b7fdd1-2079-4311-a7a3-cd2fb0b31384, myValue]</MyKeyValuePair>
    <MyBool>0</MyBool>
  </DataTable>
</DataSet>

Все типы анализируются правильно, но, очевидно, DataSet не знает, как анализировать универсальную KeyValuePair.Как мне сообщить DataGrid, как анализировать определенные типы?Я предполагаю, чтобы использовать как-то TypeConverters, но как именно?Thanx

1 Ответ

0 голосов
/ 22 декабря 2010

Хорошо, предположение об использовании TypeConverters было полностью неверным.DataSet анализирует все, что реализует интерфейс IXmlSerializable.Поэтому вместо использования универсального KeyValuePair я реализовал свой собственный, который реализует интерфейс IXmlSerializable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...