2015-04-13 64 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; }