La question est de savoir comment convertir un objet en type anonyme. Les types anonymes sont créés à l'aide d'initialiseurs d'objet et sont souvent utilisés comme moyen pratique de stocker des données. Cependant, ils n'ont pas de nom de type, ce qui peut rendre difficile leur conversion.
Une façon de convertir un objet en un type anonyme consiste à utiliser une astuce qui implique l'utilisation d'une valeur factice de l'anonyme souhaité. taper. Cette valeur factice est utilisée pour déduire le type de l'objet à diffuser. Voici un exemple :
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; } }
Une autre façon de convertir un objet en un type anonyme consiste à utiliser une méthode d'extension générique. Cette méthode peut être utilisée pour convertir un objet en n’importe quel type anonyme. Voici un exemple :
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); } }
Cependant, il est important de noter que l'utilisation de types anonymes de cette manière peut être délicate et n'est généralement pas recommandée. Il est préférable d'utiliser un vrai type à la place.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!