2012-05-01 5 views
0

可変数のサブプロパティを持つプロパティをC#で作成し、xmlで生成できますか?以下の例C#可変サブプロパティを持つプロパティ

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

xmloptionsに1つの質問に5つのオプションがあり、次に4つのオプションがあったとします。私はそれらを質問を収容するために私が作成する財産にそのように住まわせることができますか?もしそうなら、どうすればそれらを列挙できますか?

それは意味をなさない場合は、私を許して......

答えて

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; 
+0

チャームのように働いています!どうもありがとう! –

0

あなたはArrayListのようにオプション(Question.Option)のプロパティタイプを作ることができます。また、必要な場合は、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

.Net 4.xのExpandoObjectのように。プロパティとメソッドを動的に追加することができます。

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

またDynamicObjectまたはIDynamicMetaObjectProviderから継承するが、複雑significanltyのものに増加することができます。

しかし、動的ではなく辞書を使用してみると、おそらくあなたのほうが簡単になります。

関連する問題