Funktioniert HyperDescriptor in .NET 4?

8

Ich arbeite an einem .NET 4-Projekt und wäre in der Lage, von dem dynamischen Eigenschaftenzugriff zu profitieren, der HyperDescriptor bietet, aber es scheint nicht richtig zu funktionieren, wenn es in .NET 4 gebaut wird. Ich habe die Quelle aus CodeProject heruntergeladen, die Lösung in ein Projekt nach VS2010 konvertiert und das Zielframework auf 4.0 aktualisiert. Während das Build erstellt wird und das Beispiel korrekt ausgeführt wird, zeigen die Timings, dass der Zugriff auf dynamische Eigenschaften mit HyperDescriptor der langsamste mögliche Weg zum Abrufen / Festlegen von Objektwerten ist.

Dieses Problem tritt nur auf, wenn Sie HyperDescriptor aus der Quelle mit .NET 4 erstellen. Wenn Sie in Ihrem .NET 4-Projekt einen Verweis auf HyperDescriptor hinzufügen, der mit .NET 2 erstellt wurde, funktioniert es einwandfrei. Dies ist eine akzeptable Lösung für den Moment, aber wäre da ein potentieller Vorteil für die Verwendung von .NET 4 Build? Wer möchte einen Riss bei HyperDescriptor machen, sehen, warum es mit einem .NET 4 Build so langsam ist?

    
Samuel Meacham 23.06.2010, 21:40
quelle

1 Antwort

13

Ich habe den Quellcode heruntergeladen und den Test mit .NET 4 ausgeführt. Es wurde eine beeindruckende Anzahl von InvalidOperationException geworfen und gefangen, was die Langsamkeit verursacht.

Gehe zu HyperTypeDescriptionProvider.BuildDescriptor und ersetze:

%Vor%

von:

%Vor%

AllFlags ist veraltet und verursacht nur eine Warnung, aber die Aktivierung durch eine transparente Sicherheitsmethode ist in .NET 4 nicht gültig. Siehe Sicherheitsänderungen in .NET Framework 4 für weitere Informationen.

    
Julien Lebosquain 23.06.2010, 21:59
quelle

Tags und Links