2012-04-07 16 views
3

Ich möchte dynamische Proxy für einen Typ in der BCL erstellen, die eine abstrakte Klasse mit einem internen Konstruktor ist. Ich war der dynamische Proxy von Castle und dies schlägt mit einer Ausnahme fehl, die besagt, dass es keinen parameterlosen Konstruktor gibt (sie ist - es ist intern).Erstellen Sie einen dynamischen Proxy für eine abstrakte Klasse mit einem internen Konstruktor

Gibt es eine Möglichkeit, dies mit Schloss zu erreichen? Wenn nicht, sind andere dynamische Proxy-Frameworks dazu in der Lage? Dies ist der Beginn einer Entwicklung, daher wäre es einfach, Frameworks zu ändern.

+1

Siehe [System.Runtime.Remoting.Proxies.RealProxy] (http://msdn.microsoft.com/en-us/library/system.runtime.remoting.proxies.realproxy.aspx) –

Antwort

4

DynamicProxy tut nichts, was Sie in C# nicht von Hand machen könnten. Es kann also nicht von Typen erben, die nicht erstellt werden können, einschließlich Typen, die keine für DynamicProxy zugänglichen Konstruktoren haben.


Wenn Sie die Baugruppe besitzen Sie Dynamic Zugriff über Ihre AssemblyInfo.cs durch Zugabe zur Verfügung stellen kann: durch

Die wichtige Sache zu beachten ist die wörtliche Wert DynamicProxyGenAssembly2 dies eine in Speicheranordnung geschaffen DynamicProxy und Sie müssen es Zugriff bereitstellen.

+0

Was ist mit InternalsVisibleTo Attribut? –

+3

Ich sagte ausdrücklich "keine Konstruktoren für DynamicProxy zugänglich". 'InternalsVisibleToAttribute' macht es zugänglich. –

+0

Speziell (zumindest in Moq 4.0): [assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2")] –