Я использую JSON.NET для десериализации в класс CLR. Все в порядке с десериализацией JSON в класс, в конструкторе класса я пытаюсь сделать BitmapImage и установить для свойства класса Photo. Проблема в свойствах BitmapImage Фотография по-прежнему нулевая, Ури это хорошо.
Я пытаюсь использовать этот URI без конструктора класса для создания объекта BitmapImage, и он работает.
Где может быть проблема?
Код здесь:
[JsonObject]
public class JsonUser
{
[JsonProperty("idUser")]
public string IdUser { get; set; }
[JsonProperty("nick")]
public string Nick { get; set; }
[JsonProperty("sefNick")]
public string SefNick { get; set; }
[JsonProperty("sex")]
public string Sex { get; set; }
[JsonProperty("photon")]
public string Photon { get; set; }
[JsonProperty("photos")]
public string Photos { get; set; }
[JsonProperty("logged")]
public bool Logged { get; set; }
[JsonProperty("idChat")]
public int IdChat { get; set; }
[JsonProperty("roomName")]
public string RoomName { get; set; }
[JsonProperty("updated")]
public string Updated { get; set; }
public BitmapImage Photo { get; set; }
public JsonUser()
{
}
public JsonUser(string idUser, string nick, string sefNick, string sex, string photon,
string photos, bool logged, int idChat, string roomName, string updated )
{
IdUser = idUser;
Nick = nick;
SefNick = sefNick;
Sex = sex;
Photon = photon;
Photos = photos;
Logged = logged;
IdChat = idChat;
RoomName = roomName;
Updated = updated;
var img = new BitmapImage();
img.BeginInit();
img.UriSource = new Uri(photon, UriKind.Absolute);
img.EndInit();
//it is still null
Photo = img;
}
}
I use this object of type JsonUser in other class
public class MyClass
{
public JsonUser user;
public JsonUser CreateUser()
{
//this method parse JSON string and return object type of JsonUser
}
//in this method I create instance on user
public void SomeMethod()
{
user=CreateUser();
}
}
//and in other part of code i try this
var obj = new MyClass();
obj.SomeMethod();
//nad here is Photo null
obj.user.ProfilePhoto;
Думаю, проблема здесь. Если я установлю точку останова в строке:
var users = JsonConvert.DeserializeObject >> (htmlStringResult.Replace (@ "\", ""));
Свойства ProfilePhoto имеет значение null, я думаю, проблема в этом методе.
public JsonUser CreateJsonUser(string nick)
{
const string parameter = @"&nickOponent=";
try
{
string htmlStringResult = HttpGetReq(new Uri(string.Format
(CultureInfo.InvariantCulture, "{0}{1}{2}{3}",
PokecUrl.DoplnData, Account.SessionId, parameter, nick)));
var users = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, JsonUser>>>(htmlStringResult.Replace(@"\",""));
return users["newNickInfo"].First().Value;
}
catch (Exception exception)
{
throw exception;
}
}
РЕШЕНИЕ: Проблема заключалась в том, что JSON.NET вызывает этот конструктор:
public JsonUser()
{
}
Инициализирую свойство ProfilePhoto на другое место, в сеттере в свойстве Photon