【发布时间】:2011-06-02 19:51:25
【问题描述】:
如果我有这样一个非匿名类,我知道我可以像这样使用DisplayNameAttribute。
class Record{
[DisplayName("The Foo")]
public string Foo {get; set;}
[DisplayName("The Bar")]
public string Bar {get; set;}
}
但我有
var records = (from item in someCollection
select{
Foo = item.SomeField,
Bar = item.SomeOtherField,
}).ToList();
我将records 用于DataSource 用于DataGrid。列标题显示为Foo 和Bar,但它们必须是The Foo 和The Bar。由于一些不同的内部原因,我无法创建一个具体的类,它必须是一个匿名类。鉴于此,我是否可以为这个匿名类的成员设置DisplayNameAttrubute?
我试过了
[DisplayName("The Foo")] Foo = item.SomeField
但它不会编译。
谢谢。
【问题讨论】:
-
出于这个原因,我避免使用匿名类,只是制作了一个轻量级的数据对象。在您的情况下,它将是您已经发布的 Record 类。这里有使用匿名类的技术需求吗?
-
“由于一些不同的内部原因,我无法创建具体类” 没有理由不能创建新类。你的磁盘空间用完了还是什么?
-
这并不是粗鲁,但如果我的组织内部有人说我无法创建课程,我会开始完善我的简历。
-
嗯,主要原因之一是我有大约 70 个这样的查询,我不想为每个查询创建一个类,只是为了使用
DisplayNameAttribute。另一个原因是计划使用Dynamic Linq 来让用户在运行时选择列。 -
@TheOtherGuy 听起来您可能需要对数据库进行一些规范化。即使您可以选择返回哪些列,DAO 也可以包含所有内容,而未选择的内容将为空。我对用户选择所选列有意义的场景更加好奇。
标签: c# anonymous-types