DynamicObject
是 C# 中的一个基类,它允许你在运行时动态地处理对象的行为。要使用 DynamicObject
,你需要创建一个继承自它的类,并重写其中的方法以定义动态行为。以下是一个简单的示例:
using System;
using System.Dynamic;
public class MyDynamicObject : DynamicObject
{
// 重写 TrySetMember 方法以自定义属性设置行为
public override bool TrySetMember(SetMemberBinder binder, object value)
{
Console.WriteLine($"Setting property '{binder.Name}' to '{value}'");
// 将值存储在一个字典中,以便在需要时访问
this.AdditionalData[binder.Name] = value;
return true;
}
// 重写 TryGetMember 方法以自定义属性获取行为
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
Console.WriteLine($"Getting property '{binder.Name}'");
// 从字典中获取值并返回
return this.AdditionalData.TryGetValue(binder.Name, out result);
}
}
class Program
{
static void Main()
{
dynamic obj = new MyDynamicObject();
obj.Property1 = "Hello";
obj.Property2 = 42;
Console.WriteLine($"Property1: {obj.Property1}");
Console.WriteLine($"Property2: {obj.Property2}");
}
}
在这个示例中,我们创建了一个名为 MyDynamicObject
的类,它继承自 DynamicObject
。我们重写了 TrySetMember
和 TryGetMember
方法,以便在设置和获取属性时可以执行自定义逻辑。在这个例子中,我们将属性值存储在一个名为 AdditionalData
的字典中,并在需要时从中检索它们。
在 Main
方法中,我们创建了一个 MyDynamicObject
实例,并使用动态语法设置了两个属性。当我们尝试获取这些属性时,TryGetMember
方法会被调用,从而输出相应的信息。