DateTime缺少GetObjectData。或者我错过了什么?

时间:2014-06-24 14:36:45

标签: c# datetime serialization interface

据我记得具体实现接口:) 查看DateTime struct似乎实现了ISerializable。这假设实现:

void GetObjectData(SerializationInfo info, StreamingContext context);

我无法在DateTime的元数据上找到这种实现。 也:

DateTime.Now.GetObjectData(null,null);

似乎抛出编译时异常。我还没有检查过ILSpy ......

想法?

2 个答案:

答案 0 :(得分:4)

ISerializable是explicity implemented。你可以这样调用这个方法:

ISerializable now = DateTime.Now;
now.GetObjectData(null, new StreamingContext());
//don't send null for the first parameter

答案 1 :(得分:1)

查看DateTime的来源。它在实现ISerializable时使用显式接口实现,这意味着通过调用DateTime实例无法看到它。

void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
        ....
}        

请注意,方法名称以ISerializable为前缀。您需要将DateTime实例视为ISerializable实例来访问该方法。