溫馨提示×

c# dynamicobject怎樣使用

c#
小樊
130
2024-12-01 05:21:02
欄目: 編程語言

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。我們重寫了 TrySetMemberTryGetMember 方法,以便在設置和獲取屬性時可以執行自定義邏輯。在這個例子中,我們將屬性值存儲在一個名為 AdditionalData 的字典中,并在需要時從中檢索它們。

Main 方法中,我們創建了一個 MyDynamicObject 實例,并使用動態語法設置了兩個屬性。當我們嘗試獲取這些屬性時,TryGetMember 方法會被調用,從而輸出相應的信息。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女