2015-04-13 59 views
-5

我有以下代码,我不知道如何最好地重构它。发生了什么是代码只处理第二个“公共MyShipService”,但我需要调用两者(或重构使两个工作)。有任何想法吗?需要重构公共类

public class MyShipService : AnotherService, IShipService 

public MyShipService(IStateService stateservice) 
{ 
     _shipToService = new CallShipService(); 
     _stateService = stateService; 
} 
public MyShipService(ICountryService countryservice) 
{ 
      _shipToService = new CallShipService(); 
     _countryService = countryService; 
} 
shippingAddresses.Each(sa => sa.State =_stateService.GetStateByAbbrev(sa.State.TwoLetterAbbr)); 
shippingAddresses.Each(sa => sa.Country = _countryService.GetCountryByAbbrev(sa.Country.TwoLetterAbbr)); 
return shippingAddresses; 
+0

那么,为什么不从'do stuff'和'像上面那样做同样的东西'的通用代码放到一个私有方法中,这两个MyShipService方法都可以调用? – DeanOC

+0

转移到私有方法是有意义的,但问题是必须调用MyShipService两次,以便它可以指向不同的服务。代码正在处理MyShipService并查看状态存储库以返回货件的状态信息,然后我需要查看ICountryService以查找该订单的国家/地区信息。该类只调用第二个公共MyShipService并忽略第一个。 –

+0

你的第二个构造函数是做第一个构造函数的SAME事物,还是运行该代码然后运行自己的附加代码? –

回答

0

对不起家伙..总脑屁。

即工作最终代码.. 公共MyShipService(IStateService的StateService,ICountryservice countryservice) { _shipToService =新CallShipService(); _stateService = stateService; _countryService = countryService; }