0

可変数のサブプロパティを持つプロパティをC#で作成し、xmlを介してそれらを生成することは可能ですか?以下の例

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

したがって、私が得ているのは、xmloptionsに1つの質問で5つのオプションがあり、次の質問で4つのオプションがある場合です。質問を収容するために作成したプロパティにそれらをそのように入力できますか?もしそうなら、どうすればそれらを列挙できますか?

それが意味をなさないなら許してください......

4

4 に答える 4

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;
}
于 2012-05-01T14:17:34.353 に答える
1

Questionクラスのプロパティの1つは、リストまたは辞書のいずれかである必要があると思います。

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;
于 2012-05-01T14:24:59.773 に答える
0

おそらく、.Net4のExpandoObjectのような動的オブジェクトを探しています。プロパティとメソッドを動的に追加できます。

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

DynamicObjectまたはIDynamicMetaObjectProviderから継承することもできますが、これらは複雑さが大幅に増します。

ただし、動的ではなく辞書を使用してみてください。おそらく簡単です。

于 2012-05-01T14:22:10.880 に答える
0

Optionのプロパティタイプ(Question.Option)を配列リストにすることができます。また、必要に応じて、Questionオブジェクトのリストにすることができます。

于 2012-05-01T14:17:31.787 に答える