9 Stimmen

Rückgabe eines Perl-Objekts aus einer anderen Perl-Klasse nach C# mit PerlNET

Ich habe zwei Perl-Module, die ich als Objekttypen für C# freigeben möchte. Einer von ihnen konstruiert Objekte des anderen Typs und gibt sie mit einer Methode wie unten gezeigt zurück. Ich füge einen Verweis auf Type2.dll in Type1.dll ein und referenziere beide in C#. Wie der Code zeigt, kann ich ein Type2-Objekt direkt in C# erstellen, aber ich kann kein Type2-Objekt zurückgeben, das durch eine Methode in Type1 erstellt wurde. Gibt es eine Idee?

(Dies ist ein Querverweis von http://community.activestate.com/forum/return-perl-object-different-perl-class-c .)

C#:

Type1 obj1 = new Type1(); // Works
Type2 test = new Type2(); // Works
Type2 obj2 = obj1.make2(); 
// Fails: System.InvalidCastException: Unable to cast object of type 
// 'PerlRunTime.SV' to type 'Type2' at Type1.make2()

Perl: Type1.pm

package Type1;

use strict;
use Type2;

=for interface
    [interface: pure]
    static Type1();
    Type2 make2();
=cut

sub new {
    my $class = shift;
    return bless {}, $class;
}

sub make2 {
    my $this = shift;
    return Type2->new();
}

1;

Perl: Type2.pm

package Type2;

use strict;

=for interface
    [interface: pure]
    static Type2();
=cut

sub new {
    my $class = shift;
    return bless {}, $class;
}

1;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X