gpt4 book ai didi

c# - 获取匿名类型的读/写属性

转载 作者:可可西里 更新时间:2023-11-01 08:19:31 25 4
gpt4 key购买 nike

我需要获取可以写入的匿名类型的所有属性。

例如:

 var person = new {Name = "Person's Name", Age = 25};
Type anonymousType = person.GetType();
var properties = anonymousType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

问题是所有属性都有它们的 CanWrite 属性 false。对于非匿名类型,这将作为 true 返回。
我还尝试调用 PropertyInfo.GetSetMethod() 返回 null
如何检查该属性是否可以写入?

编辑:也许知道一个类型是否是匿名的就足够了。如何使用反射确定类型是否匿名?

最佳答案

从 C# 生成的匿名类型始终 是不可变的,因此可写属性集是空的。在 VB 中它是可选的:每个属性 默认 是可变的,但是如果你在它前面加上 Key 它是不可变的;只有使用 Key 声明的属性才能计算相等性和哈希码生成。我个人更喜欢 C# 的方法。

CanWrite 并非总是为非匿名类型的属性返回 true - 仅适用于可写类型。属性可以是只读的、只写的或读写的。例如:

public class Test
{
// CanWrite will return false. CanRead will return true.
public int ReadOnly { get { return 10; } }

// CanWrite will return true. CanRead will return false.
public int WriteOnly { set {} }

// CanWrite will return true. CanRead will return true.
public int ReadWrite { get { return 10; } set {} }
}

关于c# - 获取匿名类型的读/写属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585447/

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