Toczę konwerter json i mam właściwości ozdobione oznaczeniem mapowania. Używam refleksji, aby użyć tego opisu odwzorowania, aby określić rodzaj obiektu do utworzenia i sposób jego mapowania. Poniżej znajduje się przykład ...Listę <object> Listę <T> za pomocą refleksji
[JsonMapping("location", JsonMapping.MappingType.Class)]
public Model.Location Location { get; set; }
Moje mapowanie działa dobrze, dopóki nie dostać się do kolekcji ...
[JsonMapping("images", JsonMapping.MappingType.Collection)]
public IList<Image> Images { get; set; }
Problemem jest to, że nie mogę do konwersji listy do typu listy nieruchomości .
private static List<object> Map(Type t, JArray json) {
List<object> result = new List<object>();
var type = t.GetGenericArguments()[0];
foreach (var j in json) {
result.Add(Map(type, (JObject)j));
}
return result;
}
która zwraca mi listy, ale odbicie chce mi wdrożyć IConvertable przed wykonaniem property.SetValue.
Ktoś wie lepszy sposób na zrobienie tego?
Prawdopodobnie nie robi różnicy, ale czy próbował zmienić typ zwracany mapy do IList
Do tego celu potrzebne jest wsparcie kontrawariancji dla 'IList'. C# nie ma tego, więc nie możesz przypisać 'IList list = new List
Mogę zmienić typ na IList