Толик Панков
hex_laden
............ .................. ................
October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

C#, DataSet, пользовательские типы данных, и хинтик при использовании Dataset Designer.

Известно, что 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", typeof(string));
dsTest.Tables["Test"].Columns.Add("Enum", typeof(testenum));
dsTest.Tables["Test"].Columns.Add("Enum2", typeof(ProcessWindowStyle));


Код на 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-dataset-polzovatelskie-tipy-dannyh-i-hintik-pri-ispolzovanii-dataset-designer/

From:
(will be screened)
Identity URL: 
имя пользователя:    
Вы должны предварительно войти в LiveJournal.com
 
E-mail для ответов: 
Вы сможете оставлять комментарии, даже если не введете e-mail.
Но вы не сможете получать уведомления об ответах на ваши комментарии!
Внимание: на указанный адрес будет выслано подтверждение.
Username:
Password:
Subject:
No HTML allowed in subject
Message:



Notice! This user has turned on the option that logs IP addresses of anonymous posters.