Как получить имя свойства при использовании библиотеки filehelper

1

Я использую библиотеку FileHelper. На самом деле я хочу записать ошибки после прочтения файла. поэтому при записи ошибок мне нужно имя свойства сопоставленного класса. Так как я могу это сделать.

скажем, мой класс -

public class Employee
{
  public string EmployeeName;
  public string EmployeeCity
}

для этого класса let say employeename является обязательным, поэтому я буду проверять свою запись после чтения файла, поэтому теперь я хочу записать сообщение о том, что "EmployeeName является обязательным", поэтому я хочу, чтобы EmployeeName приходилось динамически. могу ли я это сделать?

Теги:

1 ответ

0

Думаю, вам нужны размышления. Вы можете использовать YourClassInstance.GetType().GetProperties() чтобы получить список свойств объекта. public string EmployeeName; - его поле. public string EmployeeName {get;set;} - его пропеллер. Но вы упомянули обязательный. Как вы признаете обязательным? Я могу предположить, что вы отмечаете их как особый атрибут:

[AttributeUsage(AttributeTargets.Property)]
public class MandatoryAttribute:System.Attribute
{
}
public class Employee
{
  [Mandatory]
  public string EmployeeName{get;set;}
  [Mandatory]   
  public string EmployeeCity{get;set;}

  public string EmployeeAccount{get;set;}
}

Теперь, чтобы получить список имен обязательных реквизитов объекта, вы можете сделать следующее:

Employee c=new Employee();
var propNames= c.GetType().GetProperties().Where(pinf=>pinf.GetCustomAttributes(true).FirstOrDefault(a => a.GetType()==typeof(MandatoryAttribute))!=null).ToList().Select(d=>d.Name);

Это даст вам список, содержащий {"EmployeeName", "EmployeeCity"}

РЕДАКТИРОВАТЬ

 var EmployeeCollection=Helper.GetEmployees();
    foreach(var employee in  EmployeeCollection)
    {
    foreach(var prop in employee.GetType().GetProperties())
    {
    string val=(string)prop.GetValue(employee,null);
    if(String.IsNullOrEmpty(val)) Helper.Log(prop.Name);
    }
}
  • 0
    На самом деле FileHelper - сторонняя библиотека для анализа файлов. он загружает данные, записанные в файл, в массив вашего собственного типа. поэтому в моем примере после чтения файла у меня будут данные, загруженные в массив Employee []. так что теперь я буду перебирать каждый объект и проверять его на обязательный случай. во время этой проверки я хочу записать имя поля, для которого проверка не прошла. поэтому я буду выполнять ручную проверку только как String.IsNullOrMandatory (emp.EmployeeName), поэтому, если значение этого свойства пустое или пустое, я хочу записать в журнал сообщение «Имя сотрудника обязательно»
  • 0
    @ user3868217, мой сценарий соответствует вашим требованиям, проверьте изменение в ответе
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню