Sha*_*bie 12 c# reflection anonymous-types
我需要获取可以写入的匿名类型的所有属性.
例如:
var person = new {Name = "Person's Name", Age = 25};
Type anonymousType = person.GetType();
var properties = anonymousType.GetProperties(BindingFlags.Public | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)
问题是所有属性都有其CanWrite属性false.对于非匿名类型,返回true.
我也尝试过调用PropertyInfo.GetSetMethod()哪个返回null.
如何检查属性是否可以写入?
编辑: 也许知道一个类型是否是匿名的就足够了.如何使用反射查明某个类型是匿名的?
Jon*_*eet 18
从C#生成的匿名类型总是不可变的,因此可写属性集是空的.在VB中它是可选的:每个属性默认为可变,但如果你在Key它前面加上它是不可变的; 只有使用Keycount 声明相等和哈希码生成的属性.我个人更喜欢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 {} }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6650 次 |
| 最近记录: |