【发布时间】:2015-09-14 18:41:32
【问题描述】:
我有一个非常有用的实用方法,它接受任何对象类型并将其序列化为 XML 对象。方法参数被定义为这样的泛型
public static string Serialize<T>(T value)
我通常会在记录此方法之前向它发送 Web 服务器请求或响应,到目前为止,这对我来说在所有情况下都运行良好。但是现在我有一段代码,我可以在其中使用两个请求对象之一,所以我想像这样调用 Serialize 方法
Utility.Serialize((addressRequest != null)?addressRequest:billingSiteIDHouseNumberRequest)
但我不断收到一条错误消息,指出这些类型不兼容。
我也觉得??运算符应该可以工作,但是它也给了我一个错误。
感谢您的任何解释。
【问题讨论】:
-
两个对象的类型是什么?让三元算子工作应该是一样的
-
或从第二个操作数转换为第三个,反之亦然。
-
假设这些是 2 种不同的对象类型,但派生自同一个类,您可能能够将两者都转换为父类型以使其工作。但是,将其扩展为
if/else可能更清晰/可读。 -
好点@JonSkeet
-
对象类型不相关,不能从一种转换到另一种。也没有共同的父类。下面戴夫的回答是我应该编码的。
标签: c# generics ternary-operator