Сохранение имен полей за пределами границы F#/C#C#

Место общения программистов C#
Ответить
Anonymous
 Сохранение имен полей за пределами границы F#/C#

Сообщение Anonymous »

В качестве учебного упражнения я провожу анализ данных в CSV-файле из 5000 строк, используя F# и функции поставщика типов F#. Когда я использую тип, созданный поставщиком типа, в f#, естественно, строки заголовка CSV-файла становятся именами полей типа.

Код: Выделить всё

type restaurantCsv = CsvProvider

type RawInspectionData(filename : string) =
member this.allData = restaurantCsv.Load(filename)

member public this.inspectionsList = this.allData.Data.ToList()

member this.FilterByName(name : string) =
this.allData.Data
|> Seq.filter (fun x -> x.EstablishmentName.Contains(name))
Кроме того, я вызываю код F# (в библиотеке, которую создает приведенный выше код) из файла C# модульного тестирования. Он работает нормально. Но когда я использую IEnumerable, который F# возвращает из FilterByName, информация об имени поля не сохраняется. Итак, у меня есть код, который сопоставляет новые имена полей с .Item1, Item2 и т. д. из кортежа:

Код: Выделить всё

var inspectionsOnCafes = inspections2013.FilterByName("Cafe");
var inspections = (from row in inspectionsOnCafes
select new
{
inspectorID = row.Item3,
restaurantName = row.Item5,
inspectionDate = row.Rest.Item6
}).ToList();
Мой вопрос: есть ли способ заставить C# распознавать имена полей в типе, сгенерированном F#, чтобы мне не приходилось сопоставлять row.Item # в легко читаемое имя поля?
Другими словами, есть ли способ использовать такой код:

Код: Выделить всё

inspectorID = row.InspectorID,
// etc.
Примечание. Я рассмотрел вопрос «Как создать поставщика типов F#, который можно использовать из C#?» но вопрос Кэмерона Таггерта и ответ Томаса Петричека, мне кажется, касаются несколько разных аспектов поставщиков типов. Даже если они точны, я этого не понимаю, поэтому мне все равно нужна дополнительная помощь.

Подробнее здесь: https://stackoverflow.com/questions/219 ... c-boundary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»