> 백엔드 개발 > C++ > 런타임에 C# 개체에 속성을 동적으로 추가하려면 어떻게 해야 합니까?

런타임에 C# 개체에 속성을 동적으로 추가하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-29 22:34:18
원래의
453명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿