Solved

Parent - Child

Posted on 2009-03-30
3
331 Views
Last Modified: 2012-05-06
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
Comment
Question by:praveenuni
  • 2
3 Comments
 
LVL 6

Expert Comment

by:Nandakumar Sakthivel
ID: 24026831
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
 

Author Comment

by:praveenuni
ID: 24027770
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
 
LVL 6

Accepted Solution

by:
Nandakumar Sakthivel earned 500 total points
ID: 24028262
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

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question