문제는 객체를 익명 유형으로 캐스팅하는 방법입니다. 익명 형식은 개체 이니셜라이저를 사용하여 생성되며 데이터를 저장하는 편리한 방법으로 자주 사용됩니다. 그러나 유형 이름이 없으므로 캐스팅하기 어려울 수 있습니다.
객체를 익명 유형으로 캐스팅하는 한 가지 방법은 원하는 익명 유형의 더미 값을 사용하는 것과 관련된 트릭을 사용하는 것입니다. 유형. 이 더미 값은 캐스팅할 개체의 유형을 유추하는 데 사용됩니다. 예는 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!