2009-04-19 23 views
0

プロパティ値が常に別のオブジェクト(ObjectB)のプロパティに割り当てられるObjectAがあります。私がやっていることは、サービスクラスが受け取るObjectBをインスタンス化してからObjectAから新しいオブジェクトに値を割り当てることです。代わりに、セッターパラメーターまたは他のメソッドでオブジェクトA全体をオブジェクトBに直接送信する必要がありますか?もしあれば、ベストプラクティスは何ですか?別のオブジェクトからの新しいオブジェクト値の割り当て

EDIT:サービス・クラスで :

public AssignValues (objectA) 
{ 
ObjectB objectB= new ObjectB(); 
objectB.prop1= ObjectA.prop1; 
objectB.prop2= ObjectA.prop2; 
} 

OR

public AssignValues(objectA) 
{ 
ObjectB objectB= new ObjectB(); 
objectB.SetValuesFromObjectA= objectA; 
} 

OR

public AssignValues(objectA) 
{ 
ObjectB objectB= new ObjectB(); 
objectB.SetValuesFromObjectA(objectA); 
} 

OR

public AssignValue(objectA) 
{ 
ObjectB objectB= new ObjectB(objectA); 
} 
+1

これは 'コンストラクターパラメーター'と '空コンストラクターとセッター'の違いですか?または 'Foo(objA)'と 'Foo(objA.Prop1、objA.Prop2、objA.Prop3)'を渡すことに関する質問ですか?または、他の何か? – Brian

+0

は2番目のようですが、Foo.prop1 = objA.prop1、Foo.prop2 = objA.prop2などを割り当てるだけの別のサービスクラスがあります。 – zsharp

答えて

2

これらのクラスが何であるかわからないので、答えにくいです。あなたは「ああ、私は常にをObjectBのコンストラクタにObjectAに渡します」と言うと...と同じように無意味

public Chicken(Gorilla g) 
{ 
    this.IsAlive = g.IsAlive; 
} 

...か何かをする羽目になる可能性があります。あなたがしたいことをする方法はたくさんあります。「正しい方法」の根本的な問題は、あなたがやっていることに完全に依存しています。

2

つのパラメータを取りますオブジェクトBのコンストラクタ、オブジェクトAがありますように聞こえる:

// ctor: 
ObjectB(const ObjectA& a) { 
    prop1= a.prop1; 
    prop2= a.prop2; 
} 

// or ctor: 
ObjectB(const ObjectA& a) : prop1(a.prop1), prop2(a.prop2) { 
} 

. . . 
// use 
ObjectB b(a); 
0

オブジェクトが同じタイプである場合、私はおそらくClone()(浅いコピー)を使用することを好むだろう方法。

オブジェクトのタイプが異なる場合は、2つのタイプを分けておくための最初のケースのように見えるメソッドを記述します。場合によっては、objectAとobjectBを取る拡張メソッドとして行うこともできます(いずれかが構造体の場合は、refまたは戻り値で行う必要があります)。私が言ったように、このケースでコンストラクタやクラス/インスタンスメソッドを使用したくない主な理由は、必ずしも互いに知り合う必要がない場合に、2つのタイプを一緒に結びつけることです。

0

あなたはAutoFacで依存性注入を考えましたか?実際に何かを作る前に関係が何であるかを宣言することができます。その後、使いやすく、きれいに整理します。

関連する問題