Использование объекта DateTime в качестве элемента данных?

#wcf

#wcf

Вопрос:

Мне нужно отправить в мой веб-сервис некоторую информацию о времени дате. Итак, я хочу использовать DateTime.

Могу ли я определить DateTime как элемент данных? Я пытаюсь определить его как элемент данных — но я получил исключение (катастрофический сбой)

Комментарии:

1. Я могу только сказать ‘молодец!’. Я программировал с. Подключитесь к сети на некоторое время и не очень часто видите исключение «катастрофический сбой»!

2. Это может быть по другой причине, это исключение не только потому, что DateTime.

3. ДА. Должна быть возможность использовать datetime в качестве возвращаемого значения веб-службы или параметра.

4. Можете ли вы показать нам какой-нибудь код ?!?!? Ваш метод обслуживания, используемый вами контракт с данными — и точные и полные сообщения об исключениях, которые вы получаете …. в противном случае, это в лучшем случае игра в угадайку!

5. Мне всегда было интересно, покажут ли создатели фреймворка когда-нибудь нам какой-нибудь код ?!?!?!? Понятно, что int и string работают «из коробки», но помимо них, коллекции и значения даты являются довольно базовыми, но для последнего примера найти невозможно.

Ответ №1:

Создайте новый класс WCFDate, и этот класс выведет строку в заданном формате, это позволит ее легко прочитать всем, кто когда-либо понадобится. Затем замените все ваши DateTimes на WCFDate.

 public class WCFDate
{
public static string DateTimeFormat = "yyyy-MM-dd hh:mm:ss zz";

public string Data { get; set; }

public WCFDate() { }

public WCFDate(string data)
{
    Data = data;
}

public WCFDate(DateTime date)
{
    Data = date.ToString(DateTimeFormat);
}

public WCFDate(DateTime? date)
{
    if (date.HasValue)
    {
        Data = date.Value.ToString(DateTimeFormat);
    }
}

public bool HasDate
{
    get
    {
        return !string.IsNullOrWhiteSpace(Data);
    }
}

public DateTime GetDate()
{
    try
    {
        return DateTime.ParseExact(Data, DateTimeFormat, CultureInfo.CurrentCulture);
    }
    catch
    {
        return new DateTime();
    }
}