C#反射获得对象所有属性,排除只读属性
时间: 2024-11-18 20:19:28 浏览: 0
提高C#编程50要点
在C#中,反射是一种强大的工具,它允许你在运行时检查和操作程序集、类型和成员。如果你想获取一个对象的所有属性,包括可读和可写的属性,可以使用`System.Reflection`命名空间下的`PropertyInfo`类。但是,如果你确实想排除只读属性,你需要遍历对象的所有属性并判断它们是否为只读。
以下是一个简单的示例:
```csharp
using System;
using System.Collections.Generic;
using System.Reflection;
public class Program
{
public class MyClass
{
public string MyReadonly = "Hello";
public string MyWritable { get; set; }
}
static void Main(string[] args)
{
var obj = new MyClass();
List<PropertyInfo> writableProperties = GetWritableProperties(obj.GetType());
foreach (var prop in writableProperties)
{
Console.WriteLine(prop.Name);
}
}
static List<PropertyInfo> GetWritableProperties(Type type)
{
List<PropertyInfo> properties = type.GetRuntimeProperties();
return properties.Where(p => !p.IsReadOnly).ToList();
}
}
```
在这个例子中,`GetWritableProperties`方法会从给定类型的`RuntimeProperties`集合中筛选出非只读属性,并返回一个新的列表。
阅读全文