C#动态给类下面的对象赋值
时间: 2023-08-13 12:07:45 浏览: 50
在 C# 中,可以使用反射来动态给类下面的对象赋值。下面是一个示例代码:
```csharp
// 定义一个类
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Address Address { get; set; }
}
// 定义一个嵌套类
public class Address
{
public string Province { get; set; }
public string City { get; set; }
}
// 动态给类下面的对象赋值
var person = new Person();
var address = new Address();
var type = person.GetType();
var nameProperty = type.GetProperty("Name");
var ageProperty = type.GetProperty("Age");
var addressProperty = type.GetProperty("Address");
var provinceProperty = typeof(Address).GetProperty("Province");
var cityProperty = typeof(Address).GetProperty("City");
nameProperty.SetValue(person, "张三");
ageProperty.SetValue(person, 20);
provinceProperty.SetValue(address, "广东");
cityProperty.SetValue(address, "深圳");
addressProperty.SetValue(person, address);
Console.WriteLine(person.Name); // 输出:张三
Console.WriteLine(person.Age); // 输出:20
Console.WriteLine(person.Address.Province); // 输出:广东
Console.WriteLine(person.Address.City); // 输出:深圳
```
上述代码使用反射获取了 `Person` 类和 `Address` 类的类型信息,然后动态获取了 `Name`、`Age` 和 `Address` 属性,并给它们赋值。同时,还动态获取了 `Province` 和 `City` 属性,并给 `Address` 对象赋值。最终,输出了 `Person` 对象的属性值。