У меня есть приложение C #, которое читает данные из хранимой процедуры, а затем создает сообщение.Я использую SqlDataReader для чтения информации из базы данных.Раньше мне приходилось создавать новый класс каждый раз, когда я получаю сообщение другого типа, и оно выходит из-под контроля.Под разным я подразумеваю разное количество столбцов и / или разные типы данных, которые содержатся в каждом из столбцов.Я пытаюсь упростить добавление различных типов сообщений и не уверен, как динамически форматировать данные, когда я их читаю.Я попытался отформатировать данные после того, как они были прочитаны в мои переменные Data #, но это просто мусор, потому что они отформатированы как неправильный тип.Итак, единственный способ, которым я сейчас вижу, - обрабатывать данные, когда я читаю переменные, и я не могу понять, как.
Мой формат сообщения следующий:
Message
Subject
(Text)
MessageHeader1
MessageHeader2
Title
Header1
Header2
Header3
(Data)
Data1
Data2
Data3
Проблема в том, что переменные Data # могут содержать информацию разного типа.В настоящее время он может содержать строки, целые числа, даты, проценты и т. Д. Существует ли способ форматирования данных на основе другого значения или какого-либо другого метода, чтобы можно было правильно отформатировать данные другого типа?
if (dr.Read())
{
message.Subject = dr["Subject"].ToString();
message.MessageText = new AlertMessageText()
{
MessageHeader1 = dr["MessageHeader1"].ToString(),
MessageHeader2 = dr["MessageHeader2"].ToString(),
Title = dr["Title"].ToString(),
Header1 = dr["Header1"].ToString(),
Header2 = dr["Header2"].ToString(),
Header3 = dr["Header3"].ToString(),
MessageData = new List<AlertMessageData>(),
};
}
...
while (dr.Read())
{
message.MessageText.MessageData.Add(new AlertMessageData()
{
Data1 = string.Format("{0:n0}", dr["Data1"]),
Data2 = string.Format("{0:n0}", dr["Data2"]),
Data3 = string.Format("{0:MM/dd/yyyy}", dr["Data3"]), // Formats Data as a Date
});
}