Предварительные условия контракта в конструкторе с пустым телом

Доброе утро! Я пишу класс для рисования гистограмм и для удобства пользователей решил добавить несколько удобных конструкторов.

Однако, как только я недавно перешел на контракты кода .NET от DevLabs, я хочу в полной мере использовать предварительные условия для защиты от моей (или чьей-то) глупости.

    public HistoGrapher(IList<string> points, IList<T> values)
        : this(points.Select((point, pointIndex) => new KeyValuePair<string, T>(point, values[pointIndex])))
    {
        Contract.Requires<ArgumentNullException>(points != null, "points");
        Contract.Requires<ArgumentNullException>(values != null, "values");
        Contract.Requires<ArgumentException>(points.Count == values.Count, "The lengths of the lists should be equal.");
    }

    public HistoGrapher(IEnumerable<KeyValuePair<string, T>> pointValuePairs)
    {
        // useful code goes here
    }

Есть кое-что, что меня смущает. Я не хочу, чтобы первый конструктор когда-либо вызывал второй, если контракт нарушен; однако предполагается, что вызов this (...) будет выполнен до выполнения тела первого конструктора.

Будет ли этот код работать так, как я хочу? Я еще не пробовал. ) будет выполняться перед выполнением тела первого конструктора.

Будет ли этот код работать так, как я хочу? Я еще не пробовал. ) будет выполняться перед выполнением тела первого конструктора.

Будет ли этот код работать так, как я хочу? Я еще не пробовал. url ":" http: \ / \ / twitpic.com \ / 1lacuz "," width ": 220," height ": 84," ...

структура файла json, которую я десериализуем, выглядит как показано ниже:

{
    "id" : "1lad07",
    "text" : "test",
    "url" : "http:\/\/twitpic.com\/1lacuz",
    "width" : 220,
    "height" : 84,
    "size" : 8722,
    "type" : "png",
    "timestamp" : "Wed, 05 May 2010 16:11:48 +0000",
    "user" : {
        "id" : 12345,
        "screen_name" : "twitpicuser"
    }
}

Я создал класс, имена полей которого указаны как свойства для JavaScriptSerializer. Код, который я буду использовать для десериализации json, выглядит следующим образом:

            using (var reader = new StreamReader(twitpicResponse.GetResponseStream())) {


                var responseBody = reader.ReadToEnd();
                var deserializer = new JavaScriptSerializer();
                var results = deserializer.Deserialize<Response>(responseBody);

            }

Моя проблема в том, как я могу прочитать поле пользователя в файле json. как показано ниже:

"user" : {
    "id" : 12345,
    "screen_name" : "twitpicuser"
}

он имеет вспомогательные свойства и значения. как я могу назвать их в моем классе Response. мой класс ответа теперь выглядит так:

public class Response {

    public string id { get; set; }
    public string text { get; set; }
    public string url { get; set; }
    public string width { get; set; }
    public string height { get; set; }
    public string size { get; set; }
    public string type { get; set; }
    public string timestamp { get; set; }

}

в каком случае лучше всего это сделать?

33
задан Brian Rasmussen 30 October 2013 в 04:50
поделиться