温馨提示×

c# dynamicobject如何实现

c#
小樊
81
2024-12-01 05:22:01
栏目: 编程语言

在C#中,DynamicObject是一个基类,它允许您创建可以在运行时处理未知属性的对象。要实现一个DynamicObject,您需要继承这个类并重写TrySetMemberTryGetMember方法。这两个方法分别用于设置和获取对象的属性值。以下是一个简单的示例:

using System;
using System.Dynamic;

public class MyDynamicObject : DynamicObject
{
    // 用于存储属性值的字典
    private readonly IDictionary<string, object> _properties = new Dictionary<string, object>();

    // 重写 TrySetMember 方法以设置属性值
    public override bool TrySetMember(SetMemberBinder binder, object value)
    {
        _properties[binder.Name] = value;
        return true;
    }

    // 重写 TryGetMember 方法以获取属性值
    public override bool TryGetMember(GetMemberBinder binder, out object result)
    {
        if (_properties.TryGetValue(binder.Name, out result))
        {
            return true;
        }

        // 如果找不到属性,则返回 false
        return false;
    }
}

class Program
{
    static void Main(string[] args)
    {
        dynamic myObject = new MyDynamicObject();
        myObject.Name = "John Doe";
        myObject.Age = 30;

        Console.WriteLine($"Name: {myObject.Name}");
        Console.WriteLine($"Age: {myObject.Age}");
    }
}

在这个示例中,我们创建了一个名为MyDynamicObject的类,它继承自DynamicObject。我们使用一个字典_properties来存储属性值,并重写了TrySetMemberTryGetMember方法。这样,我们可以在运行时动态地设置和获取对象的属性。

Main方法中,我们创建了一个MyDynamicObject实例,并设置了NameAge属性。然后我们使用这些属性输出对象的值。

0