首頁 > 後端開發 > C++ > 如何在運行時動態向 C# 物件新增屬性?

如何在運行時動態向 C# 物件新增屬性?

DDD
發布: 2024-12-29 22:34:18
原創
456 人瀏覽過

How Can I Dynamically Add Properties to C# Objects at Runtime?

在運行時動態添加C# 屬性

基於前面的討論,本文探討了一種在運行時動態向對象添加屬性的替代方法,而無需訴諸集合或字典。

ExpandoObject

ExpandoObject 提供了一種動態新增和刪除成員的便捷方法。它利用 .NET 對動態綁定的支持,讓您可以使用標準語法存取和設定屬性。

dynamic dynObject = new ExpandoObject();
dynObject.SomeDynamicProperty = "Hello!";
dynObject.SomeDynamicAction = (msg) => { Console.WriteLine(msg); };
dynObject.SomeDynamicAction(dynObject.SomeDynamicProperty);
登入後複製

自訂動態物件

對於更具體的場景,您可以可以建立自己的自訂 DynamicObject 實作。這涉及定義一個繼承自 DynamicObject 的類,並在重寫的方法中處理成員存取和設定。

public static dynamic GetDynamicObject(Dictionary<string, object> properties)
{
    return new MyDynObject(properties);
}

public sealed class MyDynObject : DynamicObject
{
    private readonly Dictionary<string, object> _properties;

    public MyDynObject(Dictionary<string, object> properties)
    {
        _properties = properties;
    }

    // Overridden methods for member access and setting
}
登入後複製

用法:

var dyn = GetDynamicObject(new Dictionary<string, object>()
{
    { "prop1", 12 },
});

Console.WriteLine(dyn.prop1);
dyn.prop1 = 150;
登入後複製

注意事項:

雖然ExpandoObject 和自定義DynamicObject 實作提供靈活性,但它們也有潛在的陷阱。謹慎使用它們,考慮效能影響、開發人員經驗以及運行時異常的可能性。

以上是如何在運行時動態向 C# 物件新增屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板