根据条件

时间:2017-07-27 16:11:00

标签: c# asp.net asp.net-web-api

我知道标题不是最好的描述问题,但我在这里尽我所能。

基本上我正在使用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语句,我需要先检查一下,例如if offset!= null,如果是如果没有传递另一个对象,则传递,然后作为参数进行偏移。

我不知道如何存档,任何帮助?

2 个答案:

答案 0 :(得分:0)

为什么不为Horizo​​ntalPosition创建两个构造函数,第一个构造函数接受一个对象,第二个构造函数接受两个?

或者你可以只有一个带有两个参数的构造函数,你可以将if条件放在构造函数块中。

答案 1 :(得分: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 }
);