FileHelpers中的多个日期如何?

cho*_*bo2 5 c# filehelpers

我想知道如何在文件管理器中执行多个日期?看来你必须指定你要支持的每种格式(有点糟糕......希望它可以处理更多基本格式).

   [FieldOrder(1), FieldConverter(ConverterKind.DateMultiFormat, "MM/dd/yyyy", "MM/d/yyyy", "M/d/yyyy","M/dd/yyyy")]
Run Code Online (Sandbox Code Playgroud)

这给了我一些

Error   35  Argument 1: cannot convert from 'FileHelpers.ConverterKind' to 'System.Type'    
Run Code Online (Sandbox Code Playgroud)

所以我似乎要做一些自定义转换或什么?它是否正确?

编辑

我使用的是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);
}
Run Code Online (Sandbox Code Playgroud)

sha*_*p00 10

参数没有过载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));
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你的领域看起来像

[FieldConverter(typeof(CustomDateTimeConverter), "MM/dd/yyyy", "MM/d/yyyy", "M/d/yyyy", "M/dd/yyyy")]
public DateTime Field1;
Run Code Online (Sandbox Code Playgroud)