为 DataColumn 添加属性

4
我正在创建一个报表组件,该组件接受一个IEnumerable输入,并执行一些转换和聚合操作,返回具有动态列数的新IEnumerable。我使用ADO.NET进行此操作,因为可以轻松创建具有适当列的DataTable。
转换后的IEnumerable被发送到报告可视化组件,该组件使用存储在属性中的信息来格式化结果。一旦应用了属性,就不必能够删除或更改它们。
我的问题是: 是否可能将属性与DataColumn相关联,以便ADO.NET DataView发出的PropertyDescriptor包括这些属性?
跟进问题: 如果ADO.NET无法实现此操作,是否有其他库可用于完成此操作?
编辑:澄清更新 我希望能够像这样做:
DataTable dt = new DataTable();
DataColumn example = dt.Columns.Add("Test",typeof(double));

//This is the functionality I am looking for ideally
example.AddAttribute(new CustomAttribute("Hello"));

public class CustomAttribute : Attribute
{
}

我通常使用 DataView.Table.Columns[] 来获取需要的信息... 你是否在使用与支持表不相关的 DataViews? - user645280
@ebyrob 不,我是按照标准方式使用DataView。我想要能够使用属性标记我的DataColumns。 - cordialgerm
DataView.Table为什么不是标准的?(结合ExtendedProperties将为您提供此功能,我能想到的唯一问题可能会出现在创建和使用之间序列化DataView时,这限制了您可以存储哪种类型的ExtendedProperties) - user645280
2个回答

9
请参考DataColumns上的ExtendedProperties属性。这允许您向数据列添加自定义数据。但是,您需要自己编写使用此自定义数据的代码,因为格式化(或者您打算使用数据的任何内容)不是自动的。

1
谢谢 - 我知道ExtendedProperties,但我特别想让PropertyDescriptor意识到它们。+1的努力 - cordialgerm
请注意文档中的说明:“当 DataColumn 以 XML 格式写入时,不是字符串类型的属性不会被持久化”。因此,似乎您可以存储所有内容,但只有字符串被持久化。 - Uwe Keim

2
回答自己的问题:不可能将属性注入到DataColumn中,并使它们出现在DataView实现的ITypedList发出的PropertyDescriptor中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接