我可以使用三元运算符来设置通用方法参数吗?

时间:2015-09-14 18:41:32

标签: c# generics ternary-operator

我有一个非常有用的实用工具方法,它接受任何对象类型并将其序列化为XML对象。方法参数被定义为类似的通用

public static string Serialize<T>(T value)

我通常在记录之前向此方法发送Web服务器请求或响应,并且到目前为止在所有情况下都能正常工作。然而,现在我有一个代码块,我可以使用两个请求对象中的一个,所以我想像这样调用Serialize方法

Utility.Serialize((addressRequest != null)?addressRequest:billingSiteIDHouseNumberRequest)

但我一直收到一条错误消息,指出这些类型不兼容。

我也觉得??操作员应该工作但是它也给我一个错误。

感谢您的任何解释。

1 个答案:

答案 0 :(得分:4)

假设您有不同的非相关类型,您需要将序列化位添加到三元逻辑中:

var result = addressRequest != null
    ? Utility.Serialize(addressRequest)
    : Utility.Serialize(billingSiteIDHouseNumberRequest);