2016-08-03 5 views
-1

Mit .NET 4.6 zu erhalten:Optionen, um die Klasseneigenschaften in einem Namen-Wert-Wörterbuch

Ich suche nach Möglichkeiten eine Name Werterfassung Wörterbuch der Eigenschaften in einer bestimmten Klasse zu erhalten. Eine naheliegende Option ist die Reflexion. In .NET 2.0-Tagen wurde die Verwendung von refelection jedoch als sehr leistungsschwach angesehen und nicht empfohlen.

Was sind die besseren Optionen, die wir in .NET 4.6 haben?

Gibt es eine Funktion in Entity Framework, die die Implementierung dieser Anforderung erleichtert?

Update 1

ich ein MailMerge Stil Template-System baue und ich bin zu ersetzen Tags wie {} Property mit dem Wert der Immobilie.

Einige der Daten stammen aus den EF-Entity-Klassen und einige stammen aus POCO-Classes.

+0

Dies ist viel näher, wie Abfragen in Standard ADO.net arbeiten. Müssen Sie ein ORM-ähnliches Entity Framework verwenden? Weil es so aussieht, als ob man versucht, die Existenz von EF zu umgehen, wenn es einfacher wäre, es überhaupt zu vermeiden. – recursive

+1

Was ist das Problem, das Sie versuchen zu lösen? –

+0

Wenn Sie zur Laufzeit eine Liste von Eigenschaften benötigen, ist Reflektion * *. Wenn Sie die Liste zur Kompilierzeit generieren können, wäre das schneller. Aber wirklich, Reflexion ist nicht so ein großes Leistungsproblem - nicht, dass Sie Ihre Leistungsbeschränkungen definiert haben, also wer weiß, ob es schnell "genug" ist. – Blorgbeard

Antwort

1

So oder so werden Sie Reflexion verwenden.

Ich würde vorschlagen, die Struktur Ihrer Modelltypen zwischenzuspeichern, wenn das Vorlagensystem geladen wird. Das beschleunigt die Vorlagenverarbeitung. Aber ehrlich gesagt, wenn Sie nicht mehrere Hunderttausend Vorlagen gleichzeitig verarbeiten, werden Sie wahrscheinlich keine signifikante Geschwindigkeitssteigerung durch Caching erzielen (Sie sollten es jedoch testen).

Eine andere Option, die ich verwendet habe und sehr zu empfehlen, ist RazorEngine. Es ist eine Vorlagen-Engine, die bereits auf der Rasierer-Vorlagen-Engine von ASP.NET basiert.

+0

Vielen Dank für Ihre Hilfe. Beziehen Sie sich auf https://github.com/Antaris/RazorEngine? Haben Sie festgestellt, dass es stabil genug ist, um in einer missionskritischen Windows-Dienstanwendung verwendet zu werden, in der große Datenmengen gerendert werden? –

+0

Ich kann keine Empfehlungen abgeben. Ihnen einfach Optionen geben. Sie müssen Ihre eigene Entscheidung für die Eignung für Ihr Projekt treffen. –

Verwandte Themen