我如何使类可以转换为DateTime.但是当我打包的时候,我需要投下我的课.例如:
object date1 = new MyDateTime(); DateTime date2 = (DateTime)date1;
我需要直接这个工作的例子.
我知道如何做,但我的方式将没有包装工作.我不知道有没有办法.
请帮忙.
PS.我需要直接将对象转换为DateTime.所以,MyDateTime必须先包装好.显式工作正常,但如果您有打包对象,则无效.而且它必须使用普通的铸造来铸造
(DateTime) (object) MyDateTime
解决方法
你似乎是继承,能够将派生类实例“存储”在基本类型的变量中,如下所示:
Stream s = new FileStream();
事实上,它是一个FileStream在引擎盖下不会丢失,只因为你指向它与Stream护目镜.
DateTime是一个结构体,结构继承不受支持 – 所以这是不可能的.
另一种替代方案是user-defined conversions的显式关键字(在语法上看起来像cast).这允许您至少在您的课程和DateTime之间交换更多的糖.
http://msdn.microsoft.com/en-us/library/xhbhezf4(v=vs.71).aspx
这可能看起来像:
class MyDateTime { private DateTime _inner; public static explicit operator DateTime(MyDateTime mdt) { return mdt._inner; } }
您可以使用对等隐式关键字执行相同操作:
public static implicit operator DateTime(MyDateTime mdt) { return mdt._inner; }
那么那么你就可以隐含地进行“投射”:
DateTime date = new MyDateTime();
另一个替代方法是使用自己的适配器类包装DateTime,内部使用DateTime,然后继承此类来创建MyDateTime.然后,您可以使用该适配器类,而不是在代码库中使用DateTime.
我已经看到类似的事情与SmartDateTime样式类,其中DateTime更好地了解null,如果它被设置.