gpt4 book ai didi

c# - 我可以将属性与匿名类一起使用吗?

转载 作者:IT王子 更新时间:2023-10-29 03:55:32 29 4
gpt4 key购买 nike

我有一个匿名类:

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

有没有办法给这个类附加属性?反射(reflection),其他?我真的很希望有这样的东西:

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

最佳答案

您实际上是在这里创建所谓的匿名类型,而不是动态类型。

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

匿名类型的 C# 版本只允许您自定义底层类型的名称/值对集。没有其他的。 VB.Net 允许稍微多一些定制,因为对可以是可变的或不可变的。但是,它们都不允许您使用属性来扩充类型。

如果你想添加属性,你需要创建一个完整的类型。

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

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

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

[1] 一个异常(exception)是 ENC 操作

关于c# - 我可以将属性与匿名类一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217437/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com