[Python.NET] BUG in python delegates returning int called from C#
Stan Pinte
stan at phidani.be
Fri Aug 26 10:51:28 CEST 2005
hello,
the following code may point to a bug in delegates implementation
python:
def stringFunc():
return "Hello world"
def intFunc():
return 0
test.AnotherClass.SetStringDelegate (test.StringDelegate(stringFunc))
test.AnotherClass.SetIntDelegate (test.IntDelegate(intFunc))
t = test.MyClass()
t.Dump(2)
C#:
public static void Dump ()
{
Console.Out.WriteLine (stringDelegate() + " " +
intDelegate());
}
see output:
[Debug]> python test.py
Got : 2
Hello world 80098912
Hello world 80099400
[Debug]>
--> As we see, the call to intDelegate() returns unspecified
results...whereas it should return 0.....
Full test case below.
Stan.
/*
* Created by SharpDevelop.
* User: hans
* Date: 25/08/2005
* Time: 18:54
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace test
{
public delegate string StringDelegate();
public delegate int IntDelegate();
public class AnotherClass
{
static StringDelegate stringDelegate;
static IntDelegate intDelegate;
public static void SetStringDelegate (StringDelegate v)
{
stringDelegate = v;
}
public static void SetIntDelegate (IntDelegate v)
{
intDelegate = v;
}
public static void Dump ()
{
Console.Out.WriteLine (stringDelegate() + " " + intDelegate());
}
}
/// <summary>
/// Description of MyClass.
/// </summary>
public class MyClass
{
public void Dump (int v)
{
Console.Out.WriteLine ("Got : " + v);
AnotherClass.Dump();
AnotherClass.Dump();
}
}
}
from CLR.System.Reflection import Assembly
Assembly.LoadWithPartialName("test")
from CLR import test
def stringFunc():
return "Hello world"
def intFunc():
return 0
test.AnotherClass.SetStringDelegate (test.StringDelegate(stringFunc))
test.AnotherClass.SetIntDelegate (test.IntDelegate(intFunc))
t = test.MyClass()
t.Dump(2)
More information about the PythonDotNet
mailing list