2017-07-27 29 views
-2

我知道標題並不是描述問題的最佳選擇,但我在這裏盡力而爲。根據條件是否通過不同對象的不同參數

所以basicly我與C#+ ASP + OPENXML工作,我有這樣的事情:

anchor.Append(
     new DW.HorizontalPosition(
       new DW.PositionOffset(MathOpenXml.centimetersToEMU(1.1).ToString()) 
       new DW.HorizontalAlignment(haPosition) 
      ) 
      { 
       RelativeFrom = 
        DW.HorizontalRelativePositionValues.Margin 
      } 
     ); 

的horizo​​ntalPosition對象可以只接收1個對象,但他們有不同的類型,我的主要問題是,我不能做一個if語句裏面,我需要檢查之前,例如,如果偏移!= null,如果它傳遞只是偏移作爲參數,如果不通過其他對象。

我不知道如何存檔,任何幫助?

+0

你的問題不是很清楚的不同影響超載。當你說1)horizo​​ntalPosition可以接收一個對象你談論它的構造函數,只能接受一個對象?和2)「我不能在那裏做一個if語句」,你在哪裏指「那裏」? – Sach

+0

好吧,你是對的,我的意思是建設者是的,它可以只接收1個對象或PositionOFfset或水平Alignament –

+0

2)我的意思是在構造函數內,如果我可以我可以說好的你想要偏移量把偏移量放在那裏如果不放水平對齊 –

回答

0

HorizontalPosition類已重載構造函數,即具有不同參數列表的幾個構造函數。由於重載解析發生在編譯時,所以不能在運行時傳遞不同類型的參數。

你需要有2個獨立的電話,每一個調用構造函數

anchor.Append(
    condition 
     ? new DW.HorizontalPosition(
       new DW.PositionOffset(MathOpenXml.centimetersToEMU(1.1).ToString()) 
     ) { RelativeFrom = DW.HorizontalRelativePositionValues.Margin } 
     : new DW.HorizontalPosition(
       new DW.HorizontalAlignment(haPosition) 
     ) { RelativeFrom = DW.HorizontalRelativePositionValues.Margin } 
); 
0

爲什麼不爲Horizo​​ntalPosition創建兩個構造函數,其中第一個構造函數接受一個對象,第二個構造函數接受兩個?

或者你可以只有一個構造函數接受兩個參數,你可以把你的if條件放在構造塊中。

+0

我打算建議完全一樣的東西。 +1兩個不錯的選擇。 – Sach

+0

我無法構建構造函數,它是由openXML lib預先定義的 –