【发布时间】:2014-03-07 15:47:28
【问题描述】:
有一个类:
public class Date
{
private DateTime _dateTime;
public Date(DateTime dateTime)
{
_dateTime = dateTime;
}
public static implicit operator DateTime(Date d)
{
if (d == null)
return default(DateTime);
return d._dateTime;
}
public static implicit operator Date(DateTime dt)
{
return new Date(dt);
}
}
所以,这段代码可以正常工作:
Date d = DateTime.Now;
DateTime dt=new Date(DateTime.Now);
但是这段代码不起作用并抛出 InvalidCastException "Specified cast is not valid.":
Date d = DateTime.Now;
var obj = (Object)d;
DateTime dt = (DateTime)obj;
对我来说,这是预期的行为,但是否有任何 hack 可以使这个特定代码工作? (没有将 obj 转换为 Date)
【问题讨论】:
-
使用
dynamic(将obj更改为动态而不是对象),或将obj转换为Date是我能想到的唯一选项。
标签: c# .net implicit-conversion