Tengo dos módulos Perl que quiero exponer como tipos de objetos a C#. Uno de ellos construye objetos del otro tipo y lo devuelve utilizando un método como se muestra a continuación. Incluyo una referencia a Type2.dll en Type1.dll y hago referencia a ambos en C#. Como el código muestra que puedo construir un objeto Type2 directamente desde C#, pero no puedo devolver un objeto Type2 que fue construido por un método en Type1. ¿Algunas ideas?Devolver un objeto perl de una clase perl diferente a C# utilizando PerlNET
(Cruz-registrado desde 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;
FYI: Estoy usando el ActiveState Perl Dev Kit 8.2.1, PerlNET y .NET 3.5. – DougWebb
Es mejor agregar esto en su pregunta. – Space