我有点难以掌握类型提供商。我希望得到一些关于类型提供者方法对以下用例的有用性的反馈。
很遗憾,我们的遥测API会将对象返回为List<Dictionary<string, object>>
。 Dictionary
包含键的字符串(表示列名),value可以是任何对象(但通常这是System命名空间中的某种值类型)。此外,还有一种方法可返回表示架构的Dictionary<string, Type>
集合(列名称 - >类型绑定)。我们通常将此数据用于临时/探索性分析和报告。
new List<Dictionary<string, object>>
{
new Dictionary<string, object> { {"a", 1}, {"b","data"}, {"c", DateTime.UtcNow } },
new Dictionary<string, object> { {"a", 3}, {"b","data2"}, {"c", DateTime.UtcNow } }
}
我想得到
type MyObject
member a : int
member b : string
member c : DateTime
List<MyObject> ...
这是否适合使用类型提供程序?正如我所说,我对这个领域很陌生,所以任何反馈都会受到赞赏。此外,如果您有任何类似问题的例子我可以用来快速从地面开始请分享(Csv类型提供商似乎是一个很好的起点)。
答案 0 :(得分:6)
如果对遥测API的类型化访问很有用,有两种简单的方法:
如果出现以下情况,则类型提供程序尤为合适:
使用类型提供程序,可以按特定时间间隔检查API,例如每次编译应用程序。类型提供程序可以是惰性的,因此只为生成的数据生成代码,因此如果数据很大,那么它也是更合适的选择。
Michael Newton对编写类型提供者有一个很好的介绍:Type Providers from the Ground Up