【发布时间】:2009-08-16 11:37:20
【问题描述】:
我正在为我的项目设计一个报告引擎。该项目将有几个报告,每个报告都可以表示为一个Linq查询;有些会有参数,有些则没有。
现在为了满足客户的要求,我需要以 XML 格式返回查询结果,以便他们可以根据自己的喜好应用 XSL 转换使其看起来漂亮。
所以,到目前为止,我的计划是创建一个抽象的Report 基类,我的所有报告都将从该基类派生。基类将需要以下方法:
public virtual void SetParameter(string ParameterName, object Value) {
throw new NotImplementedException("This report does not accept parameters.");
}
public abstract object GetData(); // what return type?
public XElement GetXMLData() {
// calls GetData() and uses some kind of reflection to turn the data into XML?
}
进一步充实这一点:SetParameter() 是不言自明的。 GetData() 应该包含 Linq 查询,并返回一个 IEnumerable<'a> 类型,其中 'a 是最终结果的匿名类型。但显然您不能将某些东西声明为匿名类型,因此我需要一些其他通用方式来关联我的 Linq 查询的结果 - 一种允许我遍历返回的字段并创建适当的 XML 模式的方式。
GetData() 的返回类型应该是什么?如何获取字段名称/值?或者,有没有更好的方法来实现我的目标?
【问题讨论】:
-
数据是表格格式还是返回中也有子集合?
-
可能是退货中的子集合。我的代码需要通过所有集合(递归?)工作并将“原始”类型属性转换为 XML。
标签: c# xml linq generics anonymous-types