Моя основная программа читает электронную таблицу через другой класс, который ничего не знает о схеме (т. Е. О типах данных внутри) электронной таблицы. Мой подход состоит в том, чтобы определить файл spreadsheetRecord, который определяет эти типы данных, и передать эту запись как класс или структуру в класс, вызываемый для чтения этой электронной таблицы. 't неявно конвертировать основной тип данных SpreadsheetRecord в тип данных, известный вызываемому классу. Конечно, это невозможно, потому что целевой класс ничего не знает об этом типе данных. Так как же передать схему электронной таблицы подпрограмме класса, отвечающей за чтение и сохранение данных электронной таблицы?
void class Main
{
public class SpreadsheetRecord
{
public double volAvg;
public double volOvr10;
public double sumScore;
}
static string[] sheetHeads = { "Volume (10 Day Avg)", "Volume (Today/Avg 10 Day)",
"Equity Summary Score from StarMine from Refinitiv" };
SpreadsheetData sheetDat = new SpreadsheetData(new SpreadsheetRecord(), sheetHeads);
...
}
public class SpreadsheetData //SpreadsheetData parses an "unknown" spreadsheet.xls file
{
public Dictionary<string, Record> SheetDB { get; private set; } //declaration of database
public class Record { }; //schema for incoming spreadsheet data record
public SpreadsheetData(Record schemaRecord, string[] recordHeadings) //constructor read in spreadsheet
{
...
using (IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(sheetInputFile.OpenRead()))
{...
FieldInfo[] recordFieldInfo = typeof(Record).GetFields();
for (int i = 1; i < result.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < recordHeadings.Length; j++)
recordFieldInfo[j].SetValue(schemaRecord, sheet1.Rows[i][Column2RecordCrossIndx[j]]);
SheetDB.Add(sheet1.Rows[i][indxOfSymbol].ToString(), schemaRecord); //store sheet data record
}
...
}
}
}