2012-05-01 5 views
0

Возможно ли создать свойство в C#, которое имеет переменное количество дополнительных свойств, а затем сгенерировать их через xml? Пример нижеC# Свойство с переменными дополнительными свойствами

Question.Name = "cake"; 
Question.Type = "radio"; 
foreach(Option option in xmloptions) 
{ 
    Question........... 
} 

Так что я получаю на это, если xmloptions было 5 вариантов на один вопрос, то 4 на следующий. Могу ли я заполнить их как таковые в собственности, которую я создаю, чтобы разместить вопросы? И если да, то как я могу их перечислить?

Простите меня, если это не имеет смысла ......

ответ

1

Я думаю, что один из свойств вашего Question класса должен быть список или словарь:

public class Question { 

    private List<Option> _Options = new List<Option>() 

    public List<Option> Options { 
     get { return m_Options; } 
    } 
} 

, а затем добавить варианты с:

question.Options.Add(option); 

Если каждый вариант идентифицируется чем-то - например, как имя - вы можете использовать словарь:

public class Question { 

    private Dictionary<string, Option> _Options = new Dictionary<string,Option>(); 

    public Dictionary<string,Option> Options { 
     get { return _Options; } 
    } 
} 

и в этом случае вы добавите опции:

question.Options[name] = option; 
+0

Работали как очарование! Огромное спасибо! –

0

Вы могли бы сделать тип свойства Варианты (Question.Option) быть ArrayList. И если вам нужно, вы можете составить список объектов Question.

3

Вы можете использовать Dictionary<string, object> (вы также можете использовать более конкретный тип объекта, чем если вы всегда знали, тип загодя) для их хранения:

var question = new Dictionary<string, object>(); 
question["Name"] = "cake"; 
question["Type"] = "radio"; 

foreach(Option option in xmloptions) 
{ 
    question["SomeOtherProperty"] = option.SomeOtherProperty; 
} 
0

Вы, вероятно, ищет динамического объекта например ExpandoObject в .Net 4. Вы можете динамически добавлять свойства и методы.

http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the-expandoobject.aspx

Вы также можете наследовать от DynamicObject или IDynamicMetaObjectProvider, но те, увеличение сложности significanlty.

Однако попробуйте использовать словарь вместо динамического, вам, вероятно, будет проще на вас.

Смежные вопросы