【发布时间】:2022-11-22 18:51:36
【问题描述】:
我正在尝试获取共享相同接口的不同类的列表。但是,出现以下错误:
Newtonsoft.Json.JsonException:没有为“StudentHousingFramework.Interfaces.IAccount”定义无参数构造函数。
这是发生错误的地方:
public void Serealise<T>(string nameList, List<T> list) { path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, nameList); string jsonString = JsonConvert.SerializeObject(list, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, TypeNameHandling = TypeNameHandling.Auto }); ; File.WriteAllText(path, jsonString); }在这里,我试图序列化,例如,类
rooms的列表恰好有一个名为IAccount的接口。这是那个课程:
public class Room : IAccount { public List<ITask> tasksToDo { get { return factory.manager.tasks.FindAll(w => w.claimer == this); } } public Login login { get; set; } public bool isOccupied { get; private set; } = true; public int id { get; set; } public string name { get { return "Room " + id; } } public Json json { get; set; } = new Json(); private Factory factory { get; set; } public Room(Factory factory, int id) { this.factory = factory; this.id = id; login = new Login(); } }这是界面:
[JsonConverter (typeof(IAccount))] public interface IAccount { public Json json { get; set; } Login login { get; set; } int id { get; set; } string name { get;} }我能做些什么来挽救这种情况吗?
【问题讨论】:
-
你正试图反序列化,并且您不能在界面中执行此操作。 Newtonsoft 应该实例化什么类?它不知道。反序列化为
List<Room>。 -
假设你是一个序列化程序。你会怎么做你自己?如果您没有实施,您怎么知道该怎么做?
-
序列化@CodeCaster 时发生错误。有关更多信息,请参阅编辑
-
@CitrusBoy,在您向我们展示的代码中,您究竟在哪里序列化了任何内容?
-
@CodeCaster 我发布了错误的东西 m8。完全是我的错