• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 340
  • Last Modified:

Parent - Child

Hello,

I have a class called "Template" and one more class called "TemplateCollections" (This is just a collection Template classes)

I will be serializing the TemplateCollections class and sending to a different .net application, where they will be deserializing the object back.

When I add Template class to TemplateCollections, I would like to maintain a parent-child relation between the classes.

For e.g I have 4 Template classes - Template1, Template2, Template3, Template4
where
Template2 is child of Template1
Template3 is child of Template2
Template4 is child of Template1

What is the optimized way of achieving this, considering the serialization process?



0
praveenuni
Asked:
praveenuni
  • 2
1 Solution
 
Nandakumar SakthivelTechnology LeadCommented:
hi ,

I had given a code snippet which defines the template class , the template class has two properties
 
  1. Template Name
  2. TemplateCollection

Template template1 = New Template();

( TemplateCollection  can have list of templates -> from ur example we can have "template2" and "Template4" in this collection )
 
  So template1 will have two child templates --> "template2" and "template4"

  from ur example "template3" should be child of "template2" that should also be possible.
 
  It will hold good for serialization also as we have the collection class.
 
  I am not sure whether you are looking for something like the above one.

 hope it helps

 Thanks,
 Nanda
 
[Serializable]
public class Template
{
    private string _templateName;
    private Template _childTemplateObj;
 
    public string TemplateName
    {
        get
        {
            return _templateName;
        }
        set
        {
           _templateName = value;
        }
    }
 
    // This is of type "Template" class this can hold template 
    public TemplateCollection ChildTemplateList
    {
        get
        {
            return _childTemplateObj;
        }
        set
        {
            _childTemplateObj = value;
        }
    }
}
 
// This holds the list of "Template" class
public class templateCollection
{   
}

Open in new window

0
 
praveenuniAuthor Commented:
Thanks Nanda. Since we are doing serilization, the size of the final object will be increase a lot. Is there a way we can define parent for every object instead of defining the children?
0
 
Nandakumar SakthivelTechnology LeadCommented:
Praveenuni ,

you need to decide during serialization what do you want to serialize in the sense do you want to serialize only the parent object or the whole object.

I can suggest two solutions

solution 1:

If you need to reduce the size of the object after serialization probably use "XmlIgnoreAttribute" (something like this) to block the unwanted attributes from serialization.

solution 2:

To define parent for every object , have two more properties named Template_Id and Parent_template_Id so that the template can be identified uniquely , following points need to be taken care

   1. The template_id needs to be assigned a unique value while creating an object
   2. The Parent_template_id needs to assigned null if it is the parent element or else this should hold the parent Template_Id
   3. For generating unique Id probably you can use GUID or you can use your own logic and can have a data structure which holds the parent child relationship
 
Hope the state will be maintained for all these actions

Hope this helps

Thanks,
Nanda
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now