2009-03-04 3 views
1

は、私は2つの別々のクラスを持っています。デザインを変更することなく、これらのオブジェクトのList<>を返すメソッドが必要です使用する汎用コレクションですか? 1 FieldPropertiesにマッピングすることができます</p> <ul> <li>AreaProperties</li> <li>FieldProperties</li> </ul> <p>1 AreaProperties:

C#の一般的なコレクションは適していますか?

私は2つのリストを送信することができますし、機能は次のようになり理解:

public List<AreaProperties> Save(ref List<FieldProperties>) 
{ 
    ..code 
} 

EDIT: ドロールヘルパーのソリューションはいいですね。しかし、私は最近FieldPropertiesとAreaPropertiesの間に1:1がないことを知りました。 これをどうすれば処理できますか? FieldPropertiesとAreaPropertiesのオブジェクトを持つカスタムクラスを使用したいと考えていますが、1対多のシナリオをどのように処理すればよいでしょうか?

+0

私はあなたに何を求めようとしているのか分かりません。あなたはいくつかの質問を明確にすることができますか? –

+0

あなたが求めていることは特にはっきりしませんが、あなたは本当にあなたのリストを参考にして渡すことはほとんどありません。 http://pobox.com/~skeet/csharp/parameters.html –

+0

を参照してください。役立つコード概要/クラスの問題を説明してください。 – NileshChauhan

答えて

9

次の2人のメンバー持つクラス/構造体を作成することができます - AreaProperties & FieldPropertiesをし、そのクラス

class Pair<T1, T2> 
{ 
    T1 t1; 
    T2 t2; 
} 

List<Pair<AreaProperties, FieldProperties>> Save(){ ...} 

それとも(以下パトリックの提案ごとに)代わりにSystem.Collections.Generic.KeyValuePairを使用するのリストを返します

List<KeyValuePair<AreaProperties, FieldProperties>> Save(){ ... } 

このようにして1..1の関係も保持します。

編集:あなたは私はあなたが リストを返すようにしたいと思います1..nの関係>>あなたが戻って取得各AreaPropertiesのフィールドのプロパティのリストを持っているとあなたはまだ関係を維持する代わりに、この方法を必要とする場合には それらの間の。

+0

リストではありません。 Save()? –

+1

.NETにSystem.Collections.Generic.KeyValuePair(Of TKey、TValue)のGeneric構造体が既にあります。 –

+0

@Thomas Eydeペアである必要があります<...> - ヘッドアップのおかげで –

3

1場合は、List<KeyValuePair<AreaProperties, FieldProperties>>

+0

あなたはそれに私を打つ! –

0

を返すことができます:1の関係は、私は、構造体のメソッドDror mentionedをお勧めします強制する必要があります。 1対1の関係が強制されていない場合は、outパラメータ修飾子の使用を検討します。

void foo() 
{ 
    List<AreaProperties> listArea; 
    List<FieldProperties> listField; 
} 

void Bar(out List<AreaProperties> listArea, out List<FieldProperties> listField) 
{ 
    listArea = new List<AreaProperties>(); 
    listField = new List<FieldProperties>(); 

} 
関連する問題