是否可以在C#中创建具有可变数量的子属性的属性,然后通过xml生成它们?以下示例
Question.Name = "cake";
Question.Type = "radio";
foreach(Option option in xmloptions)
{
Question...........
}
所以我得到的是xmloptions在一个问题上有5个选项,然后在下一个问题上有4个选项。我可以在我创建的属性中填充这些问题吗?如果是这样,我怎么能列举它们呢?
如果这没有意义,请原谅我......
答案 0 :(得分: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;
}
答案 1 :(得分: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;
答案 2 :(得分:0)
您可以将Option(Question.Option)的属性类型设置为arraylist。如果需要,可以将其设为问题对象列表。
答案 3 :(得分:0)
您可能正在寻找像.Net 4中的ExpandoObject这样的动态对象。您可以动态添加属性和方法。
您也可以继承DynamicObject或IDynamicMetaObjectProvider,但这些复杂性会显着增加。
但是,尝试使用字典而不是动态,它可能会更容易。