C# dynamic 在已有的类基础上动态生成字段
时间: 2023-07-16 18:13:00 浏览: 175
C# 作的动态定义数据库字段
C# 中的 `dynamic` 关键字是用来在运行时动态解析方法和属性的。它通常用于与外部 API 交互、动态注入依赖项等方面。
如果你想在已有的类基础上动态生成字段,可以使用 `ExpandoObject` 类型。`ExpandoObject` 是一个动态类型,可以在运行时添加和删除属性。
下面是一个示例代码,演示了如何使用 `ExpandoObject` 动态添加字段:
```csharp
dynamic obj = new ExpandoObject();
obj.Name = "John";
obj.Age = 30;
Console.WriteLine($"Name: {obj.Name}, Age: {obj.Age}");
```
在这个示例中,我们首先创建了一个 `ExpandoObject` 实例。然后,我们可以像操作普通对象一样操作它,动态添加属性。最后,我们可以使用这些属性。
如果你想在已有的类基础上动态生成字段,可以将 `ExpandoObject` 转换为该类的实例:
```csharp
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
dynamic obj = new ExpandoObject();
obj.Name = "John";
obj.Age = 30;
Person person = (Person)obj;
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
```
在这个示例中,我们将 `ExpandoObject` 转换为 `Person` 类型的实例。由于 `ExpandoObject` 动态添加了 `Name` 和 `Age` 属性,所以我们可以将它们赋值给 `Person` 的属性。最后,我们可以使用 `Person` 对象。
阅读全文