using System.Collections.Generic; namespace Kit.Helpers.Extension.Entities { public static class IdParentExtension { public static string BuildPath(this IIdParent item) { if (item != null) { return item.Parent.BuildPath().AddSufixIsNotEmpty(".") + item.Id.ToString("x9"); } return string.Empty; } public static int BuildLevel(this IIdParent item) { if (item != null) { return item.Parent.BuildLevel() + 1; } return 0; } } public interface IIdParent { int Id { get; set; } IIdParent Parent { get; set; } int? ParentId { get; set; } int Level { get; } string Path { get; } IEnumerable Childs { get; set; } } public class IdParent : IIdParent { private string _path; private int _lvl; public int Id { get; set; } public IIdParent Parent { get; set; } public int? ParentId { get; set; } public int Level { get { if (_lvl == 0) { _lvl = this.BuildLevel(); } return _lvl; } } public IEnumerable Childs { get; set; } public string Path { get { if (_path.IsNullOrEmpty()) { _path = this.BuildPath(); } return _path; } } } }