Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 106715
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T01:38:25+00:00 2026-05-11T01:38:25+00:00

I am implementing a tree think of it as a folder structure so I

  • 0

I am implementing a tree think of it as a folder structure so I have a class that looks like:

public class Folder {     //Various Props like Name etc.     public IList<Folder> Children{get;}     public Folder Parent {get;} } 

Now what I want is to be able to walk up and down the tree so given a root I can find a leaf, and given a leaf I can find the root node. So each child needs a parent. Now the question is what is the best way to add a new node to the tree. I have used two solutions in the past:

  1. Add an AddChild(Folder) method to Folder which handles adding the folder, and can set the parent. The problem with this is I now have to lock my Children collection so you can’t bypass this method.
  2. Create my own Children collection which will be given a reference back to the instance, so it can handle setting the parent on the add. The problem with this I have to implement a new collection.
  3. Use a collection which has events when items are added or deleted.

I am curious what patterns people generally use, and then if anyone has any suggestions for my specific use case. I am using nHibernate to persist my tree to SQL server. I’d rather not implement a custom collection as it’s a lot of code to get this to work for something which is a very small part of my application.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-11T01:38:26+00:00Added an answer on May 11, 2026 at 1:38 am

    After looking on MSDN you could try this:

    List<Folder> children;  public ReadOnlyCollection<Folder> Children {     get { return this.children.AsReadOnly(); } } 

    If your private member must be declared as an IList then we can copy that into a list and then return it. But I really don’t see a problem with using a concrete implementation as a private member. Changing the implementation later won’t break compatibility.

    IList<Folder> children;  public ReadOnlyCollection<Folder> Children {     get      {          return new List<Folder>(this.children).AsReadOnly();      } } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 78k
  • Answers 78k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer Since you are using a 10g client, it's advisable to… May 11, 2026 at 3:55 pm
  • added an answer Screen capture is a Win32 FAQ for 18 years. See… May 11, 2026 at 3:55 pm
  • added an answer The warning you got about subqueries executing for each row… May 11, 2026 at 3:55 pm

Related Questions

I am writing a Huffman encoding/decoding tool and am looking for an efficient way
I am currently still in school and taking a class on implementing data structures
I've got some rather complex forms, that need to be configured by web designers.
I have a recursive algorithm which steps through a string, character by character, and

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.