C# dynamic 在已有的类基础上 动态添加一些字段
时间: 2023-07-16 07:12:56 浏览: 278
动态添加数据库字段.md
在 C# 中,可以使用 `ExpandoObject` 类来实现动态添加字段的功能。`ExpandoObject` 是一个实现 `IDictionary<string, object>` 接口的类,它允许我们在运行时动态添加、删除和修改属性和方法。
以下是一个示例代码,演示如何在已有的类基础上动态添加字段:
```csharp
using System;
using System.Dynamic;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void SayHello()
{
Console.WriteLine("Hello, my name is " + Name + " and I'm " + Age + " years old.");
}
}
class Program
{
static void Main(string[] args)
{
dynamic person = new Person();
person.Name = "John";
person.Age = 30;
person.SayHello();
// 添加一个新字段
var expando = (IDictionary<string, object>)person;
expando.Add("Occupation", "Developer");
// 输出所有字段
foreach (var property in expando)
{
Console.WriteLine(property.Key + ": " + property.Value);
}
}
}
```
在上面的代码中,我们首先定义了一个 `Person` 类,其中包含 `Name` 和 `Age` 两个属性,以及一个 `SayHello` 方法。然后,我们在 `Main` 方法中创建了一个 `Person` 对象,并将其赋值给 `dynamic` 类型的变量 `person`。接着,我们可以像访问普通对象一样访问 `person` 对象的属性和方法。
接下来,我们使用 `IDictionary<string, object>` 接口将 `person` 对象转换为 `ExpandoObject` 类型,并使用 `Add` 方法添加了一个新的字段 `Occupation`。最后,我们遍历了 `ExpandoObject` 中的所有字段,并将它们输出到控制台上。
阅读全文