C# dynamic 在已有的类基础上动态添加字段
时间: 2023-07-16 19:12:58 浏览: 106
EF动态表名 c# 读取不固定表
5星 · 资源好评率100%
在 C# 中,可以使用 `ExpandoObject` 类来动态添加字段。`ExpandoObject` 是一个实现了 `IDictionary<string, object>` 接口的类,它允许你在运行时动态地添加和删除属性。以下是一个示例:
```csharp
dynamic obj = new ExpandoObject();
obj.Name = "John"; // 添加 Name 属性
obj.Age = 30; // 添加 Age 属性
Console.WriteLine($"Name: {obj.Name}, Age: {obj.Age}");
// 输出:Name: John, Age: 30
```
你也可以将 `ExpandoObject` 转换成一个已知的类型,以便像使用普通对象一样使用它。
```csharp
dynamic obj = new ExpandoObject();
obj.Name = "John";
obj.Age = 30;
var person = (Person)obj; // 将 ExpandoObject 转换成 Person 类型
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
// 输出:Name: John, Age: 30
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
```
这种方法虽然可以在运行时动态添加属性,但是并不建议在生产环境中使用,因为它会导致代码的可读性和可维护性下降。如果需要动态添加属性,建议使用反射来实现。
阅读全文