Home > Backend Development > C++ > How Can I Dynamically Add Properties to C# Objects at Runtime?

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

DDD
Release: 2024-12-29 22:34:18
Original
469 people have browsed it

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

Dynamically Adding C# Properties at Runtime

Expanding upon previous discussions, this article explores an alternative approach to dynamically adding properties to objects at runtime without resorting to Collections or Dictionaries.

ExpandoObject

ExpandoObject provides a convenient way to add and remove members dynamically. It leverages .NET's support for dynamic binding, allowing you to access and set properties using standard syntax.

dynamic dynObject = new ExpandoObject();
dynObject.SomeDynamicProperty = "Hello!";
dynObject.SomeDynamicAction = (msg) => { Console.WriteLine(msg); };
dynObject.SomeDynamicAction(dynObject.SomeDynamicProperty);
Copy after login

Customized Dynamic Object

For more specific scenarios, you can create your own custom DynamicObject implementation. This involves defining a class that inherits from DynamicObject and handling member access and setting in overridden methods.

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
}
Copy after login

Usage:

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

Console.WriteLine(dyn.prop1);
dyn.prop1 = 150;
Copy after login

Considerations:

While ExpandoObject and custom DynamicObject implementations provide flexibility, they come with potential pitfalls. Use them with caution, considering performance implications, developer experience, and the potential for runtime exceptions.

The above is the detailed content of How Can I Dynamically Add Properties to C# Objects at Runtime?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template