这是this question的后续内容,我尝试过但未能在我的回答中解释。
DateTime实现IConvertible。你可以证明这一点,因为
IConvertible dt = new DateTime();
编译没有问题。
您可以编写以下代码,但没有编译错误
IConvertible dt = new DateTime();
dt.ToDateTime(val);
但是如果你编写下一个代码片段就不会编译
DateTime dt = new DateTime();
dt.ToDateTime(val);
'System.DateTime'不包含'ToDateTime'的定义
如果DateTime实现了接口,为什么你不能在DateTime上调用该方法,除非它被转换为IConvertible?
答案 0 :(得分:12)
由于DateTime
显式实现了IConvertible
接口,因此该方法列在MSDN上的Explicit Interface Implementations部分中。以下是它的实施方式:
DateTime IConvertible.ToDateTime(IFormatProvider provider)
{
return this;
}
您应该将DateTime
投射到IConvertible
:
DateTime dt = new DateTime();
var result = ((IConvertible)dt).ToDateTime(val);