从另一个对象分配新对象值

时间:2009-04-19 02:22:42

标签: oop

我有一个ObjectA,其属性值将始终分配给另一个对象(ObjectB)。我一直在做的是让服务类实例化接收ObjectB,然后将值从ObjectA分配给新对象。我应该在setter参数或其他方法中将整个objectA直接发送到对象B吗?这里有什么最佳做法?

编辑: 在服务类中:

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);
}

4 个答案:

答案 0 :(得分:2)

很难回答,因为我们不知道这些类是什么。你可以说,“哦,我将始终将objectA传递给objectB的构造函数”并最终结束......

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

......或者说是荒谬的东西。有很多方法可以做你想做的事情,“正确方法”的根本问题完全取决于你正在做的事情。

答案 1 :(得分:2)

听起来像是一个Object 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);

答案 2 :(得分:0)

如果对象属于同一类型,我可能更喜欢使用Clone()(浅拷贝)方法。

如果对象的类型不同,我可能会编写一个看起来像你的第一种情况的方法来保持两种类型的分离。或者,我可以这样做作为一个扩展方法,它接受objectA和objectB(如果其中一个是结构,你可能必须通过ref或返回值来实现)。正如我所说的那样,在这种情况下,我不想使用构造函数或类/实例方法的主要原因是,当你可能不一定要真正了解彼此时,你现在将这两种类型绑在一起。

答案 3 :(得分:0)

您是否考虑过使用AutoFac进行依赖注入?它允许您在实际制作任何东西之前声明关系。然后很好地制作,使用和清理。