c# – 我可以使用属性与匿名类吗?

我有一个匿名类:

var someAnonymousClass = new
{
    SomeInt = 25,
    SomeString = "Hello anonymous Classes!",
    SomeDate = DateTime.Now
};

有没有反正附加属性到这个类?反思,其他?我真的希望这样的东西:

var someAnonymousClass = new
{
    [MyAttribute()]
    SomeInt = 25,
    SomeString = "Hello anonymous Classes!",
    SomeDate = DateTime.Now
};
你实际上在这里创建了一个匿名类型,而不是一个动态的。

不幸的是,没有办法实现你想做的事情。匿名类型意味着是一个由名/值对组成的非常简单的不可变类型。

匿名类型的C#版本仅允许您自定义底层类型上的名称/值对的集合。没有其他的。 VB.Net允许稍微更多的定制,因为对可以是可变的或不可变的。也不允许你用属性增加类型。

如果要添加属性,则需要创建完整类型。

EDIT OP询问是否可以通过反射添加属性。

没有这个不能做。反射是一种检查元数据而不改变它的方式。因此,它不能用于添加属性。

此外,在程序集中的类型定义,一般来说是不可变的,不能在运行时改变[1]。这包括向方法添加属性。所以其他反射技术也不能在这里使用。

[1]一个例外是ENC操作

http://stackoverflow.com/questions/1217437/can-i-use-attributes-with-anonymous-classes

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 我可以使用属性与匿名类吗?