2009-06-17 26 views
1

Kann mir jemand sagen, ob es möglich ist, eine C# -Klasse in IronPython neu zu deklarieren? Wenn ich eine C# -Klasse hätte, wäre ich in der Lage, sie von IronPython zu kopieren?Redeclare .net-Klassen in IronPython

+0

Als Klarstellung möchte ich wissen, wie man C# Klassen von IronPython affe-patch. –

Antwort

0

Sie können nicht von IronPython Affen Patch. IronPython behandelt alle .NET-Klassen genau so, wie CPython integrierte Typen behandelt: Sie können keine Monkey-Patches sein. IronRuby unterstützt dies dagegen.

-1

Warum würden Sie es redeclare? Wäre es nicht sinnvoller, subclass it oder nur eine völlig neue Klasse zu machen?

EDIT: Geben Sie Ihre Klarstellung, ich denke, was Sie tatsächlich brauchen, ist eine ordnungsgemäße Inversion der Kontrolle (IOC) Rahmen, wie Castle Windsor. Im Grunde haben Sie eine Datenbankschnittstelle, dann konfigurieren Sie das IOC-Framework, um eine echte Datenbank für die Produktion zu injizieren und eine Datenbank zum Testen zu erstellen.

+0

Ich möchte den Konstruktor neu deklarieren, weil die Klasse versucht, auf die Datenbank im Konstruktor zuzugreifen, und das macht es schwierig, Unit-Test. Indem ich den Konstruktor neu deklariere, kann ich die Klasse auf eine Pseudo-Datenbank verweisen und sie testen, ohne die eigentliche Datenbank zu treffen. Danke für die Antwort. –

0

Sie können von IronPython aus einen Patch erstellen, aber IPy ist die einzige Umgebung, die Ihre Änderungen berücksichtigt. Wenn Sie beispielsweise versuchen, File.Create von IronPython zu überspielen, würde dies für jeden IPy-Code funktionieren, aber wenn Sie eine C# -Methode aufgerufen haben, die File.Create aufgerufen hat, würde sie den echten, nicht den Mock erhalten.

+0

Wie machst du das? Wenn ich es an meinen eigenen Klassen versuche, bekomme ich diese Nachricht: AttributeError: Attribut 'methodName' von 'className' Objekt ist schreibgeschützt –