FileHelpers Master/Detail Records с обобщениями

У меня возникают проблемы с работой основных подробных записей с дженериками. Мой код выглядит следующим образом

// Setup file engine with Master/Detail types
MasterDetailEngine<PurchaseOrderHeader, PurchaseOrderLine> engine = new MasterDetailEngine<PurchaseOrderHeader, PurchaseOrderLine>(CommonSelector.MasterIfBegins, "H");

// Init the Master/Detail
MasterDetails<PurchaseOrderHeader, PurchaseOrderLine> poRecs = new MasterDetails<PurchaseOrderHeader, PurchaseOrderLine>();

// Setup list for detail lines & populate with test data
List<PurchaseOrderLine> poLines = new List<PurchaseOrderLine>();

for (int i = 1; i <= 5; i++)
{
    poLines.Add(new PurchaseOrderLine() { LineMarker = "L", LineNumber = i, ItemCode = "TestCode", Price = 12.34M, Quantity = i * 2, UOM = "EA" });
}

// Attach records to Master/Detail
poRecs.Master = new PurchaseOrderHeader() { LineMarker = "H", PayloadID = "[email protected]", CustomerPO = "DO1234", ShipToAddressCode = "ShipToAddressCode", BillToAddressCode = "BillToAddressCode" };
poRecs.Details = poLines.ToArray();

// Write file
engine.WriteFile("SampleFile.txt", poRecs);

Я получаю следующую ошибку компиляции:

CS1502: Лучшее соответствие перегруженного метода для FileHelpers.MasterDetail.MasterDetailEngine<ImportExport.PurchaseOrderHeader,ImportExport.PurchaseOrderLine>.WriteFile(string,System.Collections.Generic.IEnumerable<FileHelpers.MasterDetail.MasterDetails<ImportExport.PurchaseOrderHeader,ImportExport.PurchaseOrderLine>>)

имеет некоторые недопустимые аргументы.

Я пытался преобразовать poRecs в IEnumerable, но это все равно не работает.

Любые предложения будут ценны!


person Ryan Brooks    schedule 17.01.2013    source источник


Ответы (1)


Похоже, что вызов WriteFile ожидает IEnumerable<MasterDetails<PurchaseOrderHeader, PurchaseOrderLine>>, а вы просто передаете MasterDetails<PurchaseOrderHeader, PurchaseOrderLine>.

Конечно, вы не можете преобразовать MasterDetails в IEnumerable, потому что они не конвертируются. Что вам нужно сделать, так это обернуть poRecs IEnumerable. Попробуйте следующее:

engine.WriteFile("SampleFile.txt", new[] { poRecs });
person Paul Bellora    schedule 17.01.2013