using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Objet Anonyme C# (Comment cela fonctionne pour les développeurs)
Publié janvier 14, 2025
Partager:
Introduction de l'objet anonyme
Les types anonymes en C# offrent un mécanisme permettant d'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. Il est utile pour la structure d'objet unique. Ce sont des types générés par le compilateur qui dérivent directement de System.Object, encapsulant les propriétés d'objet de manière efficace 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 de type, qui reste inaccessible au niveau du code source. Nous découvrirons égalementIronPDFen tant que bibliothèque PDF pour les projets dot NET.
Caractéristiques clés
Les types anonymes sont strictement limités dans leurs capacités :
Les propriétés sont automatiquement implémentées en tant que propriétés 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, d'événements ou d'autres membres de classe tels que les méthodes equals et gethashcode à l'intérieur.
Ne peut pas être initialisé avec des valeurs nulles, des fonctions anonymes ou des types de pointeurs, garantissant 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 retournent 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.
Regroupement temporaire de données
Ils servent de contenants 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 à courte durée de vie ou les calculs intermédiaires.
Encapsulation des Propriétés
Le type de données anonyme offre un moyen propre de regrouper des propriétés d'objet connexes 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 en utilisant le mot-clé var avec l'opérateur new et la syntaxe d'initialisation 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 type
var person = new { FirstName = "Iron", LastName = "Dev", Age = 35 }; // public int age in this anonymous type
Private person = New With {
Key .FirstName = "Iron",
Key .LastName = "Dev",
Key .Age = 35
}
Règles d'initialisation des propriétés
Le compilateur applique 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 se voir attribuer de valeurs nulles ou de types de pointeurs. Une fois initialisées, les valeurs des propriétés d'un type anonyme peuvent être consultées en utilisant la notation point standard, mais elles ne peuvent pas être modifiées après l'initialisation en raison de leur nature en lecture seule.
Inférence de type et correspondance
var person1 = new { Name = "Iron", Age = 30 };
var person2 = new { Name = "Dev", Age = 25 };
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 dont les noms de propriétés, les types et l'ordre correspondent. Cela permet la compatibilité de type entre les instances à utiliser dans les collections ou à passer comme paramètres de méthode au sein de la même assemblée.
Types anonymes imbriqués
Le type de données anonyme prend en charge des structures imbriquées complexes avec des propriétés d'objets de type anonyme. Il 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 }
};
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 }
};
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 : C&num ; Bibliothèque PDF
IronPDFest une bibliothèque puissante pour générer, éditer et gérer des documents PDF dans des applications .NET. Lorsque vous travaillez avec C#, les développeurs utilisent souvent des objets anonymes pour des structures de données légères et ad hoc, surtout dans des scénarios où créer une classe entière n'est pas nécessaire. Ces objets anonymes peuvent être utilisés de manière transparente avec IronPDF pourcréer des documents PDF de manière dynamique. 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 ventes 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 en vue de leur rendu.
using IronPdf;
using System;
using System.Linq;
class Program
{
static void Main()
{
License.LicenseKey = "Licenes-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!");
}
}
using IronPdf;
using System;
using System.Linq;
class Program
{
static void Main()
{
License.LicenseKey = "Licenes-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()
License.LicenseKey = "Licenes-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# offrent une manière flexible et efficace de créer des structures de données temporaires sans avoir besoin de déclarations de classes formelles. Ils sont particulièrement utiles lorsqu'on travaille avec des requêtes LINQ, des transformations de données et des bibliothèques comme IronPDF. La combinaison de types anonymes avec les capacités de génération de PDF d'IronPDF offre une solution puissante pour créer des PDFs dynamiques et axés sur les données avec un code minimal.
IronPDF permet aux développeurs de tester ses fonctionnalités par le biais d'uneessai gratuit, ce qui facilite l'exploration de ses capacités dans vos applications .NET. Les licences commerciales commencent à partir de 749 $ et donnent accès à l'ensemble de ses fonctionnalités, y compris le rendu HTML en PDF haute performance, l'édition de PDF et les fonctionnalités de sécurité.
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT Paramètre Out en C# (Comment ça marche : Un guide pour les développeurs)
SUIVANT > C# Parallel Foreach (Comment ça fonctionne pour les développeurs)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier