У меня есть объект самореференции, который мне нужно преобразовать из одного в другой объект, который аналогичен. Я не могу найти подходящий метод для преобразования с рекурсией без перехода в бесконечный цикл. Любая помощь будет appreciated.Still обучения моих веревок в C#C#: преобразование объектов саморекламы
Объект 1:
public class Comment
{
public string User{ get; set; }
public List<Comment> Replies { get; set; }
}
Объекта 2:
public class CommentRepo
{
public string User{ get; set; }
public ICollection<CommentRepo> Replies { get; set; }
}
Я установил свой объект следующим образом:
var comment = new Shared.Models.Comment
{
User = "Test User"
};
var reply1 = new Shared.Models.Comment
{
User = "Reply User 1"
};
var subreply1 = new Shared.Models.Comment
{
User = "Sub Reply User 1"
};
var sublist = new List<Shared.Models.Comment>() { subreply1 };
reply1.Replies = sublist;
var reply2 = new Shared.Models.Comment
{
User = "Reply User 2"
};
var listed = new List<Shared.Models.Comment>() {reply1, reply2};
comment.Replies = listed;
Способ конвертирования: Здесь я иссякаю.
public ICollection<CommentRepo> ToCommentRepo(IEnumerable<Shared.Models.Comment> comments)
{
if (comments == null) return null;
var commentRepo = comments.Select(entity => new CommentRepo
{
User = entity.User,
Replies = entity.Replies.Count > 0 ? ToCommentRepo(entity.Replies) : null,
}).ToList();
return commentRepo;
}
Что здесь означает «иссякновение»? Если у вас есть рабочий ToCommentRepo(), он должен работать. –
Это не похоже, что у вас есть какие-либо циклические ссылки в вашем примере, поэтому вы не должны получать бесконечный цикл, если у вас нет элементов в коллекции Replies, содержащих исходный комментарий, но это не должно быть случай, правильно? –
@ Денис Ярковой, Упс справа. У меня было несколько циркулярных ссылок, которые взорвались. Спасибо за вашу помощь и время. – user2368215