
C# Anonymous Object (Comment ça fonctionne pour les développeurs)
Introduction de l'objet anonyme
Les types anonymes en C# fournissent un mécanisme pour encapsuler des propriétés publiques en lecture seule dans un seul objet de type anonyme sans définir explicitement une déclaration de classe formelle. Ils sont utiles pour créer des structures de données à usage unique. Ce sont des types générés par le compilateur qui dérivent directement de System.Object, encapsulant efficacement les propriétés d'objet et servant de conteneurs de données légers et immuables. Ces types sont des classes scellées où le compilateur déduit et génère automatiquement le nom du type, qui reste inaccessible au niveau du code source. Nous découvrirons également IronPDF en tant que bibliothèque PDF pour les projets .NET.
Caractéristiques clés
- Les types anonymes ont des capacités strictement limitées :
- Les propriétés sont automatiquement implémentées comme publiques en lecture seule dans la définition de propriété d'un type anonyme.
- Les utilisateurs ne peuvent pas définir explicitement de méthodes, événements ou autres membres de classe comme les méthodes Equals ou GetHashCode à l'intérieur.
- Ils ne peuvent pas être initialisés avec des valeurs nulles, des fonctions anonymes ou des types de pointeurs, garantissant ainsi l'intégrité des types anonymes.
Cas d'Utilisation Courants
Opérations LINQ
Les objets de type de données anonymes excellent dans les expressions de requête LINQ, en particulier dans les clauses select pour les objets de type anonyme, où ils renvoient efficacement des sous-ensembles de propriétés spécifiques à partir d'objets plus grands. Cette approche optimise l'utilisation de la mémoire en créant des objets temporaires contenant uniquement les données nécessaires.
Groupement de données temporaires
Ils servent de conteneurs efficaces pour les structures de données temporaires lorsqu'il serait excessif de créer une classe formelle. Cela est particulièrement utile pour les transformations de données de courte durée ou les calculs intermédiaires.
Encapsulation des propriétés
Le type de données anonyme fournit un moyen simple de regrouper les propriétés d'objet liées en utilisant des propriétés en lecture seule. Le compilateur garantit la sécurité des types tout en maintenant une syntaxe concise pour l'accès aux propriétés.
Syntaxe et structure
La création de types anonymes suit un modèle spécifique utilisant le mot-clé var avec l'opérateur new et la syntaxe de l'initialiseur d'objet. Le compilateur génère automatiquement un nom de type qui reste inaccessible au niveau du code source.
var person = new { FirstName = "Iron", LastName = "Dev", Age = 35 }; // public int age in this anonymous typePrivate person = New With {
Key .FirstName = "Iron",
Key .LastName = "Dev",
Key .Age = 35
}Règles d'initialisation des propriétés
Le compilateur impose des règles strictes pour l'initialisation des propriétés dans les types anonymes. Toutes les propriétés doivent être initialisées lors de la création de l'objet et ne peuvent pas être affectées à des valeurs nulles ou à des types de pointeurs. Une fois initialisées, les valeurs des propriétés peuvent être accessibles en utilisant la notation par points standard, mais elles ne peuvent pas être modifiées après l'initialisation en raison de leur nature en lecture seule.
Inférence et correspondance des types
var person1 = new { Name = "Iron", Age = 30 };
var person2 = new { Name = "Dev", Age = 25 };Dim person1 = New With {
Key .Name = "Iron",
Key .Age = 30
}
Dim person2 = New With {
Key .Name = "Dev",
Key .Age = 25
}Le compilateur génère des informations de type identiques pour les types anonymes avec des noms de propriétés, des types et un ordre correspondants. Cela permet la compatibilité des types entre les instances à utiliser dans les collections ou passées en tant que paramètres de méthode au sein du même ensemble.
Types anonymes imbriqués
Les types de données anonymes prennent en charge des structures imbriquées complexes avec des propriétés d'objet de type anonyme. Cela est utile pour la création de représentations de données hiérarchiques :
var student = new {
Id = 1,
PersonalInfo = new {
Name = "James",
Contact = new {
Email = "james@email.com",
Phone = "123-456-7890"
}
},
Grades = new { Math = 95, Science = 88 }
};Dim student = New With {
Key .Id = 1,
Key .PersonalInfo = New With {
Key .Name = "James",
Key .Contact = New With {
Key .Email = "james@email.com",
Key .Phone = "123-456-7890"
}
},
Key .Grades = New With {
Key .Math = 95,
Key .Science = 88
}
}Opérations de collection
Les types anonymes excellent dans les scénarios impliquant la manipulation de collections et la transformation de données :
var items = new[] {
new { ProductId = 1, Name = "Laptop", Price = 1200.00m },
new { ProductId = 2, Name = "Mouse", Price = 25.99m },
new { ProductId = 3, Name = "Keyboard", Price = 45.50m }
};Dim items = {
New With {
Key .ProductId = 1,
Key .Name = "Laptop",
Key .Price = 1200.00D
},
New With {
Key .ProductId = 2,
Key .Name = "Mouse",
Key .Price = 25.99D
},
New With {
Key .ProductId = 3,
Key .Name = "Keyboard",
Key .Price = 45.50D
}
}IronPDF : Bibliothèque PDF en C#
IronPDF est une bibliothèque puissante pour générer, éditer et gérer des documents PDF dans des applications .NET. Lorsqu'ils travaillent avec C#, les développeurs utilisent souvent des objets anonymes pour des structures de données légères et ad hoc, en particulier dans les scénarios où il n'est pas nécessaire de créer une classe entière. Ces objets anonymes peuvent être utilisés de manière transparente avec IronPDF pour créer des documents PDF dynamiquement. Cela aide à créer une solution flexible pour des flux de travail de données vers PDF rapides. Voici un exemple pour illustrer comment IronPDF fonctionne avec des objets anonymes :
Exemple : Utilisation d'objets anonymes pour remplir un PDF
Imaginez que vous avez une liste de données de vente que vous souhaitez rendre sous forme de tableau dans un PDF. Au lieu de créer une classe formelle, vous pouvez utiliser un objet anonyme pour formater rapidement les données pour le rendu.
using IronPdf;
using System;
using System.Linq;
class Program
{
static void Main()
{
// Set your IronPDF license key here
License.LicenseKey = "Your-Licence-Key";
// Sample data using anonymous objects
var salesData = new[]
{
new { Product = "Laptop", Quantity = 2, Price = 1200.50 },
new { Product = "Smartphone", Quantity = 5, Price = 800.00 },
new { Product = "Headphones", Quantity = 10, Price = 150.75 }
};
// Create an HTML string dynamically using the anonymous object data
var htmlContent = @"
<html>
<head><style>table {border-collapse: collapse;} th, td {border: 1px solid black; padding: 5px;}</style></head>
<body>
<h1>Sales Report</h1>
<table>
<thead>
<tr>
<th>Product</th>
<th>Quantity</th>
<th>Price</th>
</tr>
</thead>
<tbody>
" +
string.Join("", salesData.Select(item =>
$"<tr><td>{item.Product}</td><td>{item.Quantity}</td><td>{item.Price:C}</td></tr>")) +
@"
</tbody>
</table>
</body>
</html>";
// Generate the PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF
pdf.SaveAs("SalesReport.pdf");
Console.WriteLine("PDF generated successfully!");
}
}Imports IronPdf
Imports System
Imports System.Linq
Friend Class Program
Shared Sub Main()
' Set your IronPDF license key here
License.LicenseKey = "Your-Licence-Key"
' Sample data using anonymous objects
Dim salesData = {
New With {
Key .Product = "Laptop",
Key .Quantity = 2,
Key .Price = 1200.50
},
New With {
Key .Product = "Smartphone",
Key .Quantity = 5,
Key .Price = 800.00
},
New With {
Key .Product = "Headphones",
Key .Quantity = 10,
Key .Price = 150.75
}
}
' Create an HTML string dynamically using the anonymous object data
Dim htmlContent = "
<html>
<head><style>table {border-collapse: collapse;} th, td {border: 1px solid black; padding: 5px;}</style></head>
<body>
<h1>Sales Report</h1>
<table>
<thead>
<tr>
<th>Product</th>
<th>Quantity</th>
<th>Price</th>
</tr>
</thead>
<tbody>
" & String.Join("", salesData.Select(Function(item) $"<tr><td>{item.Product}</td><td>{item.Quantity}</td><td>{item.Price:C}</td></tr>")) & "
</tbody>
</table>
</body>
</html>"
' Generate the PDF
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' Save the PDF
pdf.SaveAs("SalesReport.pdf")
Console.WriteLine("PDF generated successfully!")
End Sub
End Class
Conclusion
Les types anonymes en C# fournissent un moyen flexible et efficace de créer des structures de données temporaires sans avoir besoin de déclarations de classe formelles. Ils sont particulièrement utiles lors du travail avec des requêtes LINQ, des transformations de données et des bibliothèques comme IronPDF. La combinaison des types anonymes avec les capacités de génération PDF d'IronPDF offre une solution puissante pour créer des PDF dynamiques et pilotés par les données avec un minimum de surcharge de code.
IronPDF permet aux développeurs de tester ses fonctionnalités grâce à un essai gratuit, ce qui facilite l'exploration de ses capacités dans vos applications .NET. Les licences commerciales commencent à $999 et donnent accès à l'ensemble complet de fonctionnalités, y compris le rendu HTML-vers-PDF à haute performance, l'édition de PDF et les fonctionnalités de sécurité.

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.
Articles connexes


