Evg*_*kim 13 c# datetime packing
如何创建可以转换为DateTime的类.但是,当它打包时,我需要投我的课.例如:
object date1 = new MyDateTime();
DateTime date2 = (DateTime)date1;
Run Code Online (Sandbox Code Playgroud)
我需要直接这个工作的例子.
我知道怎么做,但我的方式将无需包装.我不确定是否有办法做到这一点.
请帮忙.
PS.我需要直接将对象转换为DateTime.因此,MyDateTime必须先包装好.显式效果很好,但是如果你有打包对象则没有用.它必须使用普通的铸造像
(DateTime) (object) MyDateTime
Run Code Online (Sandbox Code Playgroud)
Ada*_*rth 31
你看起来是继承,能够将派生类实例"存储"在基类型的变量中,如下所示:
Stream s = new FileStream();
Run Code Online (Sandbox Code Playgroud)
它是一个FileStream引擎盖下的事实不会因为你用Stream护目镜指向它而丢失.
DateTime是struct和struct不支持继承-所以这是没有可能的.
另一种选择是用户定义的转换的explicit关键字(在语法上看起来像转换).这使您至少可以在班级和更多糖之间进行交流.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;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用对应的implicit关键字执行相同的操作:
public static implicit operator DateTime(MyDateTime mdt)
{
return mdt._inner;
}
Run Code Online (Sandbox Code Playgroud)
然后让你隐式地进行"投射":
DateTime date = new MyDateTime();
Run Code Online (Sandbox Code Playgroud)
另一种方法是DateTime使用您自己的内部使用a的适配器类进行包装,DateTime然后从此类继承来创建MyDateTime.然后DateTime使用此适配器类而不是在代码库中使用.
我已经在SmartDateTime样式类中看到过类似的东西,它们DateTime可以更好地理解null,如果已经设置了.
Mar*_*rco 10
你可以用
class MyDateTime
{
public static explicit operator DateTime(MyDateTime dt)
{
return new DateTime(); // Convert dt here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3210 次 |
| 最近记录: |