Известно, что DataSet
может хранить пользовательские типы данных в таблицах. Для нетипизированного DataSet
, т.е. экземпляра класса DataSet
, достаточно, чтобы нужные типы данных были видны из того места кода, в котором будем проводить операции с DataSet
. Например, сделаем тестовый enum
:public enum testenum
{
val0=0,
val1=1
}
и подключим какое-нибудь дополнительное пространство имен, например:using System.Diagnostics;
Теперь, в таблицу DataSet
можно добавить поля типов testenum
и, например, ProcessWindowStyle
(из System.Diagnostics
)//...
DataSet dsTest = new DataSet();
//...
dsTest.Tables.Add("Test");
dsTest.Tables["Test"].Columns.Add("Text"
dsTest.Tables["Test"].Columns.Add("Enum"
dsTest.Tables["Test"].Columns.Add("Enum2"
Код на PasteBin
Если же делать типизированный DataSet
, т.е. добавить в проект DataSet
, как отдельный класс (наследник обычного DataSet
), и создать нужные таблицы в конструкторе (Dataset Designer), то при попытке просто прописать пользовательский тип DataType
в конструкторе, получится ошибка:
На самом деле, имена типов данных нужно вводить полностью, вместе с их пространствами имен. Т.е., при условии, что пространство имен программы, например
tmpDataSet
, то тип testenum
нужно указывать как tmpDataSet.testenum
(а тип ProcessWindowStyle
, соответственно, как System.Diagnostics.ProcessWindowStyle
)Вещь, вроде бы довольно очевидная, если приглядеться (стандартные типы из списка прописываются точно также):
Но почему-то прямо нигде не озвученная, что странно.
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2018/11/25/c-da