【问题标题】:how to use TypeConverters to convert a System.Datetime to custom type如何使用 TypeConverters 将 System.Datetime 转换为自定义类型
【发布时间】:2009-01-09 21:55:58
【问题描述】:
出于某种原因,我需要将 DateTime 转换/转换为许多自定义对象之一
这被证明是很难以一种很好的通用方式做到的。
我正在考虑在对象上实现扩展方法,或者可能扩展 DateTimeConverter。
但是处理这个问题的通用方法是什么,我有一个对象和一个目标类型,目前我正在使用System.ConvertTo(..),但这显然是有限的,因为它只支持转换为 .NET 类型并且不能扩展。
有什么想法吗?
【问题讨论】:
标签:
datetime
typeconverter
complex-data-types
【解决方案1】:
您可以为 TimeStamp 添加一个以 DateTime 作为参数的构造函数。
public class TimeStamp
{
public TimeStamp(DateTime dateTime, ...)
{
// Your code here to convert from dateTime to TimeStamp
}
}
然后……
DestType Convert<DestType>( Object linqResult )
{
DestType result;
if( linqResult is DateTime && DestType is TimeStamp )
{
DateTime dbTime = linqResult as DateTime;
result = new TimeStamp( dbTime );
}
...
return result;
}
您甚至可以使用各种反射和构造函数等来扩展它。
但是,如果您想将一个对象建立在另一个对象上(例如日期时间的时间戳),那么构造函数似乎很自然。
希望这会有所帮助,TJB