>백엔드 개발 >C++ >C#에서 개체를 익명 형식으로 캐스팅하려면 어떻게 해야 합니까?

C#에서 개체를 익명 형식으로 캐스팅하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-05 22:46:40112검색

How Can I Cast an Object to an Anonymous Type in C#?

익명 유형으로 캐스팅

문제는 객체를 익명 유형으로 캐스팅하는 방법입니다. 익명 형식은 개체 이니셜라이저를 사용하여 생성되며 데이터를 저장하는 편리한 방법으로 자주 사용됩니다. 그러나 유형 이름이 없으므로 캐스팅하기 어려울 수 있습니다.

객체를 익명 유형으로 캐스팅하는 한 가지 방법은 원하는 익명 유형의 더미 값을 사용하는 것과 관련된 트릭을 사용하는 것입니다. 유형. 이 더미 값은 캐스팅할 개체의 유형을 유추하는 데 사용됩니다. 예는 다음과 같습니다.

public class Program
{
    public static void Main(string[] args)
    {
        var a = new { Id = 1, Name = "Bob" };
        TestMethod(a);
    }

    private static void TestMethod(object x)
    {
        // This is a dummy value, just to get 'a' to be of the right type
        var a = new { Id = 0, Name = "" };
        a = Cast(a, x);
        Console.WriteLine(a.Id + ": " + a.Name);
    }

    private static T Cast<T>(T typeHolder, object x)
    {
        // typeHolder above is just for compiler magic
        // to infer the type to cast x to
        return (T)x;
    }
}

객체를 익명 유형으로 캐스팅하는 또 다른 방법은 일반 확장 방법을 사용하는 것입니다. 이 메서드를 사용하면 개체를 익명 형식으로 캐스팅할 수 있습니다. 예는 다음과 같습니다.

public static class AnonymousTypeExtensions
{
    public static T CastTo<T>(this object value, T targetType)
    {
        // targetType above is just for compiler magic
        // to infer the type to cast value to
        return (T)value;
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        var a = new { Id = 1, Name = "Bob" };
        var b = a.CastTo(new { Id = 0, Name = "" });
        Console.WriteLine(b.Id + ": " + b.Name);
    }
}

그러나 이러한 방식으로 익명 유형을 사용하는 것은 까다로울 수 있으며 일반적으로 권장되지 않는다는 점에 유의하는 것이 중요합니다. 대신 실제 유형을 사용하는 것이 더 좋습니다.

위 내용은 C#에서 개체를 익명 형식으로 캐스팅하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.