2013-03-11 4 views
0

조건부 계산을 수행하는 코드가 많습니다. 사용자는 UI (드롭 다운, 라디오 버튼 등)에 대한 선택을하고 선택에 따라 결과를 계산합니다. 이전에는 ViewBag을 사용하여 계산 된 결과를 뷰에 표시했습니다. 하지만 지금은 NHibernate를 사용하여 이것들을 저장하고 싶습니다. 그리고 계산 된 결과를 저장할 무언가로 변환하는데 어려움을 겪고 있습니다. 나는 이것이 전체 재 작성을 요구하지 않기를 바랬다. 여기 저장을위한 조건부 계산을 NHibernate로 변환하려고 시도합니다.

는 내가 전에 무엇을하고 있었는지의 예입니다 (하나의 조건의 예 - 참고 : PriceQuote.cs은 값을 보유) Calculate.cs에 :

public decimal decSpouseFilingChapter7(QuoteViewModel quoteData) 
{ 
    if (quoteData.QuotePartRecord.MaritalStatusDropDown == 
     MaritalStatus.Yes && 
     quoteData.QuotePartRecord.SpouseFilingRadioButton == 
     SpouseFiling.No) 
      return PriceQuote.priceNoSpouseFilingChapter7; // see below 
    else if (quoteData.QuotePartRecord.MaritalStatusDropDown == 
     MaritalStatus.Yes && 
     quoteData.QuotePartRecord.SpouseFilingRadioButton == 
     SpouseFiling.Yes) 
      return PriceQuote.priceSpouseFilingChapter7; // see below 
    else 
     return 0; 
} 

PriceQuote.cs이있을 것 (단 보여주는

,628,426,384,934,199,321 : 나는 계산 결과와 함께 와서 이런 짓을 했을까, 조건의 무리 후에, 또한 Calculate.cs에 따라

public static decimal priceNoSpouseFilingChapter7 { get { return 100; } } 
public static decimal priceSpouseFilingChapter7 { get { return 300; } } 

: 두, 그것은 100 + 이상의 금액)을 보유하고 0

내가 알기로 다른 조건을 모두 추가하여 내가 가진 것의 길이를 보여 줬습니다. - 이것은 단지 하나의 합계입니다. 수십 가지가 더 있습니다 (각각 수십 개의 조건문이 있음).

나는이 같은 수행하여 get/set에 노력하고 있기 때문에 사람이, 내가이 변환 것입니다 방법에 대한 몇 가지 샘플 코드를 제공 할 수 있습니다 :

public virtual decimal TotalChapter7 
{ 
    get 
    { 
     return SpouseFilingChapter7 + ...; 
    } 
} 
: 내가 좋아하는 뭔가를 할 수 있도록

public virtual decimal SpouseFilingChapter7 
{ 
    get 
    { 
     return decSpouseFilingChapter7; 
    } 
    set 
    { 
     decSpouseFilingChapter7 = value; 
    } 
} 

하지만 분명히 잘못되었습니다.

도움 주셔서 감사합니다.

답변

0

는 여기 NHibernate에이 함께 할 수있다 분명한 것이 아니라, 리팩토링 가능한입니다

class Calculate 
{ 
    private QuoteViewModel _quoteData; 
    private PriceQuote _prices; 

    public Calculate(QuoteViewModel quoteData, PriceQuote prices) 
    { 
     _quoteData = quoteData; 
     _prices = prices; 
    } 

    public decimal SpouseFilingChapter7 
    { 
     get 
     { 
      if (_quoteData.QuotePartRecord.MaritalStatusDropDown == MaritalStatus.Yes) 
      { 
       return _quoteData.QuotePartRecord.SpouseFilingRadioButton == SpouseFiling.Yes ? 
        _prices.priceSpouseFilingChapter7 : 
        _prices.priceNoSpouseFilingChapter7; 
      } 
      else 
       return 0; 
     } 
    } 

    public decimal TotalChapter7 
    { 
     get 
     { 
      return _prices.priceChapter7 + 
       SpouseFilingChapter7 + 
       PaymentPlanChapter7 + 
       ProcessingChapter7 + 
       SubmissionChapter7 + 
       DistrictChapter7 + 
       UnsecuredCreditor + 
       Garnishment + 
       TaxLiability + 
       RentalEviction + 
       RealEstateChapter7 + 
       RealEstateIntention + 
       VehicleChapter7 + 
       VehicleIntention + 
       OtherAssetChapter7 + 
       OtherAssetIntention + 
       FinancialAccount + 
       MeansTestAnalysisChapter7; 
     } 
    } 
} 
관련 문제