我有一个类,它有一个集合readonly
,没有setter。
有没有一种方法可以反序列化一些json,并让它调用示例上的方法而不是属性设置器?
例如:
public class User
{
private ObservableCollection<Movie> _movies;
public string Name { get; set; }
public ReadOnlyCollection<Movie> FavouriteMovies { get; set; }
public void AddMovie(Movie movie) { .. }
//-or-
public void AddMovies(IEnumerable<Movie> movies){ .. }
}
将内容放入_movies
后备字段的唯一方法是通过方法AddMovies
。因此,当尝试反序列化某个在json中包含Movies数组的有效json时,它将调用AddMovie
或AddMovies
...
1条答案
按热度按时间liwlm1x91#
Ninja按PK更新:
我已经使用了一个 * 类 * 的集合而不是简单的字符串forked the fiddle below,对于一个更复杂的例子,现在工作,基于下面的答案。
使用一个
JsonConverter
来定制你的json的转换。这里有一个简单的例子来说明它是如何工作的。给定一个这样的类:JSON是这样的:
您可以创建一个转换器来读取该json并调用
AddString
来填充backingField
,如下所示:现在要使用它,并使
MyClass
不知道它是如何反序列化的,只需执行以下操作:这是一个fiddle