【问题标题】:Filehelpers Field max lengthFilehelpers 字段最大长度
【发布时间】:2015-01-22 10:49:31
【问题描述】:

我正在使用 Filehelpers 并导入了一个 csv 文件。一切正常,但现在我想验证导入字段的长度。

[DelimitedRecord(";")]
public class ImportFile
{
    public string Name;
    public string NameSurname;
}

如果 InputString 大于我的 MaxLength 属性,是否有可能创建一个属性“MaxLength”来拆分输入字符串或引发异常? 我发现的唯一东西是 FieldFlixedLength,但那只是拆分,即字段中的 Inputfile。

【问题讨论】:

    标签: validation field maxlength filehelpers


    【解决方案1】:

    您可以按如下方式实现AfterRead 事件:

    [DelimitedRecord(";")]
    public class ImportRecord : INotifyRead<ImportRecord>
    {
        public string Name;         
        public string NameSurname;
    
        public void BeforeRead(BeforeReadEventArgs<ImportRecord> e)
        {
        }
    
        public void AfterRead(AfterReadEventArgs<ImportRecord> e)
        {
            if (e.Record.Name.Length > 20)
                throw new Exception("Line " + e.LineNumber + ": First name is too long");
    
            if (e.Record.NameSurname.Length > 20)
                throw new Exception("Line " + e.LineNumber + ": Surname name is too long");
        }
    
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            var engine = new FileHelperEngine<ImportRecord>();
            engine.ErrorMode = ErrorMode.SaveAndContinue;
    
            string fileAsString = "Firstname;SurnameIsAVeryLongName" + Environment.NewLine
                                + "FirstName;SurnameIsShort";
    
            ImportRecord[] validRecords = engine.ReadString(fileAsString);
    
            Console.ForegroundColor = ConsoleColor.Red;
            foreach (ErrorInfo error in engine.ErrorManager.Errors)
            {
                Console.WriteLine(error.ExceptionInfo.Message);
            }
    
            Console.ForegroundColor = ConsoleColor.White;            
            foreach (ImportRecord validRecord in validRecords)
            {
                Console.WriteLine(String.Format("Successfully read record: {0} {1}", validRecord.Name, validRecord.NameSurname));
            }
    
            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 2014-08-31
      • 2016-09-13
      • 2014-10-17
      • 1970-01-01
      相关资源
      最近更新 更多