Я создал портативную библиотеку классов под названием DataContracts
, которая содержит мои проекты Messages
и Views
. В нем содержатся стандартные вещи, такие как GetStockItemByIDRequest
и StockView
.Совместное использование сборок с использованием Portable Class Library с DataAnnotations
Проблема заключается в том, что я пытаюсь добавить DataAnnotations
, используя System.ComponentModel.DataAnnotations
для некоторых из моих Views
как таковых.
[DataContract]
public class StockView
{
[Required]
[DataMember]
public Guid StockID { get; set; }
[Required]
[DataMember]
public string Name { get; set; }
}
Я могу успешно добавить System.ComponentModel.DataAnnotations
в мой портативный проект библиотеки классов и может успешно ссылаться на него в моем Windows Phone 8 приложения и даже может создать новый экземпляр с моей точки зрения как таковой StockView View = new StockView();
в моей Windows Phone App, но если Я стараюсь использовать либо Newtonsoft.Json
или System.Net.Http.HttpClient
, делая что-то вроде
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("http://myservice.com");
T result = await response.Content.ReadAsAsync<T>();
иЛИ
T result = await Newtonsoft.Json.JsonConvert.DeserializeObjectAsync<T>("{}");
, т. Е. Где применяется десериализация ...
Я столкнулся с погрешностью Could not load file or assembly 'System.ComponentModel.DataAnnotations, Version=2.0.5.0'
. Я полагаю, это потому, что не видно, что System.ComponentModel.DataAnnotations
is supported in Windows Phone 8 (но почему я могу добавить его в качестве ссылки на мой PCL?).
Так что мои вопросы: почему эта ошибка не вызвана, когда я создаю новый экземпляр этих классов напрямую, а во-вторых, как мне обойти это?
Пользовательские атрибуты не создают новый экземпляр класса. – Fals
Хорошо, справедливо, но тогда какой правильный подход избежать этой проблемы. Разумеется, другие пытались создать совместимые с перекрестными портативными портативными библиотеками классов? –