Я пытался прочитать значение из листа Excel, отобразить его в dataTable, а затем отобразить значение в его класс в C #, используя отражение. Нет проблем для этого
У меня есть два класса - один предоставляет тестовые данные, а другой - логику для чтения файла фиксированной ширины.
Когда два класса имеют больше свойств, способ доступа к его свойствам несколько дублируется.
Вот класс TestData
class TestData
{
public string TestName { get; set; }
public string Name{ get; set; }
public string Address{ get; set; }
}
//ignoring the whole logic in the middle, i can access the value of the test by
_testData.Name or _testData.Address
Вот класс для доступа к файлу с фиксированной шириной
class FieldPosition
{
public string FieldName { get; set; }
public string PosStart{ get; set; }
public string PosEnd{ get; set; }
}
class IncomingFields
{
public FieldPosition Name => GetValue("Name");
public FieldPosition Address=> GetValue("Address");
}
//ignoring the whole logic in the middle, i can access the value of the field position by
_field.Name.PosStart or _field.Name.PosEnd
Когда у TestData и IncomingFields есть больше свойств, код для их вызова становится большим дублирующим беспорядком. Есть ли способ уменьшить код, поскольку имя свойства совпадает?
Вот что мне нужно сделать для одного свойства.
if (_testData.Name != "")
{
ModifyFixedWidthFile(_testData.Name, _field.Name.PosStart, _field.Name.PosEnd)
}
if (_testData.Address!= "")
{
ModifyFixedWidthFile(_testData.Address, _field.Address.PosStart, _field.Address.PosEnd)
}
Есть ли в любом случае, чтобы сократить 2 условия, в 1 блок кода, выполняя цикл foreach? Я просто не знаю, как назвать свойства в общем виде. Можно ли сделать что-то подобное в C #
if (_testData.[something generic]!= "")
{
ModifyFixedWidthFile(_testData.[something generic], _field.[something generic].PosStart, _field.[something generic].PosEnd)
}