我想知道如何在 filehelpers 中执行多个日期?似乎您必须指定要支持的每一种格式(有点糟糕......希望它可以处理更多基本格式)。
[FieldOrder(1), FieldConverter(ConverterKind.DateMultiFormat, "MM/dd/yyyy", "MM/d/yyyy", "M/d/yyyy","M/dd/yyyy")]
虽然这给了我
Error 35 Argument 1: cannot convert from 'FileHelpers.ConverterKind' to 'System.Type'
看来我必须进行一些自定义转换或其他操作?这是正确的吗?
编辑
我使用的版本是 2.9.9.0
选项
// Summary:
// Indicates the FileHelpers.ConverterKind used for read/write operations.
//
// Remarks:
// See the Complete attributes list for more information and examples of each
// one.
[AttributeUsage(AttributeTargets.Field)]
public sealed class FieldConverterAttribute : Attribute
{
// Summary:
// Indicates the FileHelpers.ConverterKind used for read/write operations.
//
// Parameters:
// converter:
// The FileHelpers.ConverterKind used for the transformations.
public FieldConverterAttribute(ConverterKind converter);
//
// Summary:
// Indicates a custom FileHelpers.ConverterBase implementation.
//
// Parameters:
// customConverter:
// The Type of your custom converter.
public FieldConverterAttribute(Type customConverter);
//
// Summary:
// Indicates the FileHelpers.ConverterKind used for read/write operations.
//
// Parameters:
// converter:
// The FileHelpers.ConverterKind used for the transformations.
//
// arg1:
// The first param passed directly to the Converter Constructor.
public FieldConverterAttribute(ConverterKind converter, string arg1);
//
// Summary:
// Indicates a custom FileHelpers.ConverterBase implementation.
//
// Parameters:
// customConverter:
// The Type of your custom converter.
//
// args:
// A list of params passed directly to your converter constructor.
public FieldConverterAttribute(Type customConverter, params object[] args);
//
// Summary:
// Indicates a custom FileHelpers.ConverterBase implementation.
//
// Parameters:
// customConverter:
// The Type of your custom converter.
//
// arg1:
// The first param passed directly to the Converter Constructor.
public FieldConverterAttribute(Type customConverter, string arg1);
//
// Summary:
// Indicates the FileHelpers.ConverterKind used for read/write operations.
//
// Parameters:
// converter:
// The FileHelpers.ConverterKind used for the transformations.
//
// arg1:
// The first param passed directly to the Converter Constructor.
//
// arg2:
// The second param passed directly to the Converter Constructor.
public FieldConverterAttribute(ConverterKind converter, string arg1, string arg2);
//
// Summary:
// Indicates a custom FileHelpers.ConverterBase implementation.
//
// Parameters:
// customConverter:
// The Type of your custom converter.
//
// arg1:
// The first param passed directly to the Converter Constructor.
//
// arg2:
// The second param passed directly to the Converter Constructor.
public FieldConverterAttribute(Type customConverter, string arg1, string arg2);
//
// Summary:
// Indicates the FileHelpers.ConverterKind used for read/write operations.
//
// Parameters:
// converter:
// The FileHelpers.ConverterKind used for the transformations.
//
// arg1:
// The first param passed directly to the Converter Constructor.
//
// arg2:
// The second param passed directly to the Converter Constructor.
//
// arg3:
// The third param passed directly to the Converter Constructor.
public FieldConverterAttribute(ConverterKind converter, string arg1, string arg2, string arg3);
//
// Summary:
// Indicates a custom FileHelpers.ConverterBase implementation.
//
// Parameters:
// customConverter:
// The Type of your custom converter.
//
// arg1:
// The first param passed directly to the Converter Constructor.
//
// arg2:
// The second param passed directly to the Converter Constructor.
//
// arg3:
// The third param passed directly to the Converter Constructor.
public FieldConverterAttribute(Type customConverter, string arg1, string arg2, string arg3);
}
最佳答案
没有带参数的重载 FieldConverterAttribute(ConverterKind, params string[])
。
有一个
FieldConverterAttribute(ConverterKind, string, string, string)
这样您最多可以提供 3 种格式。
如果您需要更多,那么您可以创建自己的转换器:
public class CustomDateTimeConverter : ConverterBase
{
public CustomDateTimeConverter(string format1, string format2, string format3, string format4)
{
_FormatStrings = new string[] { format1, format2, format3, format4} ;
}
private string[] _FormatStrings;
public override object StringToField(string from)
{
foreach (string formatString in _FormatStrings)
{
DateTime dt;
if (DateTime.TryParseExact(from, formatString, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
return dt;
}
throw new ConvertException(from, typeof(DateTime));
}
}
然后你的字段看起来像
[FieldConverter(typeof(CustomDateTimeConverter), "MM/dd/yyyy", "MM/d/yyyy", "M/d/yyyy", "M/dd/yyyy")]
public DateTime Field1;
关于c# - FileHelpers 中的多个日期如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9133011/