【发布时间】:2021-06-12 22:34:19
【问题描述】:
我正在尝试将一些 C# 代码移至 F#,并且我正在努力以特定的方法实现这一目标。缺少使用反射时如何使 Seq 和 Pipeline 正常工作。
这里是 C#
public static List<IList<object>> ConvertTTypeToData<T>(IEnumerable<T> exportList)
{
var type = typeof(T);
var exportData = new List<IList<object>>();
var properties = type.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
foreach (var item in exportList.Where(x => x != null))
{
var data = properties.Select(property =>
{
return property.GetValue(item).ToString();
}).ToArray();
exportData.Add(data);
}
return exportData;
}
不幸的是,这是我目前使用 F# 所取得的成果
member this.ConvertToGoogleRowsData(rows) =
let bindingFlags = BindingFlags.Public ||| BindingFlags.Instance
let prop = typeof(T)
let properties = prop.GetType().GetProperties(bindingFlags)
let array = new ResizeArray<'T>()
let test = rows |> Seq.toList
|> Seq.filter (fun x -> x != null )
|> Seq.iter (fun item ->
array.Add(properties
|> Seq.map (fun prop -> prop.GetValue(item).ToString())))
abstract member ConvertToGoogleRowsData :
rows: 'T seq
-> obj seq seq
好心人能帮帮我吗?
非常感谢您的建议和帮助。
谢谢!
【问题讨论】: