2012-07-24 91 views
0

我想调用一个方法,其中两个参数是对象(一个检索Person,一个添加的Person)。然后存储在Person对象的数组中,然后我可以单独使用这两个对象。调用两个对象的方法并存储在对象数组中

在方法:
我做创建对象人,并在其中存储数据从其中firstName是“地中海”数据库中检索数据。
并添加其他行(人员功能),并希望将其传回。 但是不返回对象并且直接失败。

有人可以帮助我吗?

我有这样的事情:

public Person [] retrievePerson(Person somePerson, Person addRowPerson) 
{ 
    ....... 
    findedPerson = new Person(title, firstName, secondName, city, nationality, letter); 
    myTableCreatedPerson = new Person(title, firstName, secondName, city, nationality, letter); 
    return retrievePerson(findedPerson, myTableCreatedPerson); 
} 

//and calling function in different class like that 
public void retrievePersonTest() //Create Person in DB directly then Retrieve Person and compare retrieve features with create features then directly delete him from DB 
{    
    Person expected = null; 
    Person actual = null; 
    Person addRowPerson = null; 
    Person [] twoPersonArray; 
    DBConnect target = new DBConnect(); 

    try //retrieve Person 
    {      
     twoPersonArray = target.retrievePerson(expected, addRowPerson); //do not return     
     twoPersonArray = (Func<Person, Person>)target.retrievePerson(expected, addRowPerson).CreateDelegate(typeof(Func<Person, Person>)); //do not return either 
    } 
} 

回答

1

您创建了一个无限递归,因为在retrievePerson的末尾您再次调用它。

您需要的retrievePerson return语句改成这样:

return new[] {findedPerson, myTableCreatedPerson}; 
+0

感谢您现在丹尼尔完美的工作。我喜欢这个想法,有人可以帮助另一个......希望将来我可以做同样的事情。你知道我在哪里可以找到资源,学习ADO.net或推荐好书。 – Mira 2012-07-24 11:38:20

0

尚不清楚为什么你传递参数,如果你没有在功能后使用它,但假设这是一个错误的

public Person [] retrievePerson(Person somePerson = null, Person addRowPerson = null) 
{ 
    bool nullpassed = false; 

     if(somePerson == null) { 
      nullpassed = true; 
      somePerson = new Person(title, firstName, secondName, city, nationality, letter); 
     } 

     if(addRowPerson == null) { 
      nullpassed = true; 
      addRowPerson = new Person(title, firstName, secondName, city, nationality, letter); 
     } 

     if(nullpassed)  
      return retrievePerson(somePerson , addRowPerson); 
     else 
      return new Person[] {somePerson , addRowPerson} 
} 

应该工作,但你需要测试这一点。

但我也强烈建议修改您的代码,并使用不同的功能,为您做的每一个操作。不要对与行为不同的功能进行双重调用。几个月后,当代码变得越来越复杂时,你会跳入完整的混乱局面。

希望这会有所帮助。

相关问题