Click here to Skip to main content
15,921,203 members
Home / Discussions / C#
   

C#

 
GeneralRe: A problem with System.Drawing.Drawing2D Pin
Guffa30-Nov-08 9:10
Guffa30-Nov-08 9:10 
GeneralRe: A problem with System.Drawing.Drawing2D Pin
Pedram Behroozi30-Nov-08 9:49
Pedram Behroozi30-Nov-08 9:49 
QuestionGraphics ? Pin
nlowdon29-Nov-08 8:49
nlowdon29-Nov-08 8:49 
AnswerRe: Graphics ? Pin
Christian Graus29-Nov-08 13:47
protectorChristian Graus29-Nov-08 13:47 
GeneralRe: Graphics ? Pin
electriac30-Nov-08 6:44
electriac30-Nov-08 6:44 
QuestionHow can I implement this complex object Pin
mbudak29-Nov-08 1:16
mbudak29-Nov-08 1:16 
AnswerRe: How can I implement this complex object Pin
Chris Copeland29-Nov-08 3:19
mveChris Copeland29-Nov-08 3:19 
AnswerRe: How can I implement this complex object Pin
Dag Oystein Johansen29-Nov-08 4:08
Dag Oystein Johansen29-Nov-08 4:08 
From your code it's evident that you want ExamFile to be a collection of Exam objects. Exams have names and a collection of Question(s), and Question has two string attributes, Remark and Type.

This object model is easily expressed in C#:

public class ExamFile 
{
    public string Title { get; set; }
    public string Name { get; set; }
    readonly public List<exam> Exams = new List<exam>();
}

public class Exam : List<question>
{
    public string Name { get; set; }
    readonly public List<question> Questions = new List<question>();
}

public class Question
{
    public string Remark { get; set; }
    public string Type { get; set; }
}
</question></question></question></exam></exam>


You could construct the object graph and then set properties as in your posted code, like this:

ExamFile file = new ExamFile();
file.Add(new Exam());
file.Add(new Exam());
file.Exams[0].Questions.Add(new Question());
file.Exams[0].Questions.Add(new Question());
file.Exams[1].Questions.Add(new Question());
file.Exams[1].Questions.Add(new Question());


and then do as in your posted code

file.Title = "Test";
...
file.Exams[1].Questions[1].Remark = "tough question";


However, in most cases you'd create a question object and set it's properties before adding it to an exam. Also note that the types themselves should usually have constructors that take some parameters. This has two side-effects: Less code to write to use the type, which is not very important but a marginal benefit, and a guarantee that an instance of a type cannot be created without certain minimum information.

Types should typically be designed to be flexible and general. Coding convenience can be achieved by writing little "helper methods" separately from the type itself. In this case, you could do something like this:

void addQuestion(Exam e, string remark, string type)
{
   Question q = new Question();
   q.Remark = remark;
   q.Type = type;
   e.Questions.Add(q);
}

Exam addExam(ExamFile f, string name)
{
   Exam e = new Exam();
   e.Name = name;
   f.Exams.Add(e);
   return e;
}

ExamFile file = new ExamFile();
f.Title = "test";
f.Name = "my first exam.mfe";

Exam e = addExam(file, "First Exam");
addQuestion(e, "remark #1", "Mutiple");
addQuestion(e, "remark #2", "I don't know");


and so on.
AnswerRe: How can I implement this complex object Pin
Dominic Goulet1-Dec-08 1:00
Dominic Goulet1-Dec-08 1:00 
Questionaddin to IE Pin
Maverickcool29-Nov-08 1:06
Maverickcool29-Nov-08 1:06 
Questionassembly won't run from network folder. Pin
swjam29-Nov-08 0:23
swjam29-Nov-08 0:23 
AnswerRe: assembly won't run from network folder. Pin
Wendelius29-Nov-08 0:32
mentorWendelius29-Nov-08 0:32 
AnswerRe: assembly won't run from network folder. Pin
User 665829-Nov-08 0:37
User 665829-Nov-08 0:37 
AnswerRe: assembly won't run from network folder. Pin
Dave Kreskowiak29-Nov-08 5:01
mveDave Kreskowiak29-Nov-08 5:01 
QuestionScreen Capture Pin
krinaljariwala28-Nov-08 23:49
krinaljariwala28-Nov-08 23:49 
AnswerRe: Screen Capture Pin
Christian Graus29-Nov-08 13:49
protectorChristian Graus29-Nov-08 13:49 
GeneralRe: Screen Capture Pin
krinaljariwala29-Nov-08 20:54
krinaljariwala29-Nov-08 20:54 
QuestionScreen Handling Pin
krinaljariwala28-Nov-08 23:22
krinaljariwala28-Nov-08 23:22 
QuestionScreen Capture Pin
krinaljariwala28-Nov-08 22:49
krinaljariwala28-Nov-08 22:49 
Questionwhere have vnc OpenSource? Pin
lockepeak28-Nov-08 22:32
lockepeak28-Nov-08 22:32 
AnswerRe: where have vnc OpenSource? Pin
Thomas Weller28-Nov-08 23:23
Thomas Weller28-Nov-08 23:23 
AnswerRe: where have vnc OpenSource? Pin
Garth J Lancaster28-Nov-08 23:25
professionalGarth J Lancaster28-Nov-08 23:25 
Questiongenerating XML file issue Pin
George_George28-Nov-08 21:49
George_George28-Nov-08 21:49 
AnswerRe: generating XML file issue Pin
Wendelius28-Nov-08 22:27
mentorWendelius28-Nov-08 22:27 
GeneralRe: generating XML file issue Pin
George_George28-Nov-08 22:35
George_George28-Nov-08 22:35 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.