> Hi! I'm having trouble understanding some weird behavior when trying to use > an object defined in a third-party assembly. > When I view the assembly in Object Explorer, I see that the CosEvent class > defines two constructors.
> One parameterless: > > public CosEvent() > Member of Cos.Core.EMS.CosEvent > And one parameterized: > public CosEvent(ref string prmPlatform, ref string prmProcessname, ref int > prmProcessInstance, ref char prmEventType, > ref int prmEventNumber, ref int prmErrorNumber, ref string > prmEventDescription) > Member of Cos.Core.EMS.CosEvent > So far, so good. But when I run the following test script: > import clr > import System > clr.AddReferenceToFileAndPath(r'c:\dll\CosEventManagement.dll') > import Cos.Core.EMS > print 50 * '-' > print '-- parameterless constructor' > print 50 * '-' > e = Cos.Core.EMS.CosEvent() > print type(e) > print e > print 50 * '-' > print '-- parameterized constructor with keyword params' > print 50 * '-' > e = Cos.Core.EMS.CosEvent(Platform='om5681d2',ProcessName='test > process',ProcessInstance=1,EventType='S',EventNumber=1000,ErrorNumber=0,EventDescription='just > another lousy test') > print type(e) > print e > print 50 * '-' > print '-- parameterized constructor with positional params' > print 50 * '-' > e = Cos.Core.EMS.CosEvent('om5681d2','test process',1,'S',1000,0,'just > another lousy test') > print type(e) > print e > This is its output: > -------------------------------------------------- > -- parameterless constructor > -------------------------------------------------- > <type 'CosEvent'> > <Cos.Core.EMS.CosEvent object at 0x000000000000002B [Cos.Core.EMS.CosEvent]> > -------------------------------------------------- > -- parameterized constructor with keyword params > -------------------------------------------------- > <type 'CosEvent'> > <Cos.Core.EMS.CosEvent object at 0x000000000000002C [Cos.Core.EMS.CosEvent]> > -------------------------------------------------- > -- parameterized constructor with positional params > -------------------------------------------------- > <type 'tuple'> > (<Cos.Core.EMS.CosEvent object at 0x000000000000002D > [Cos.Core.EMS.CosEvent]>, ' > om5681d2', 'test process', 1, <System.Char object at 0x000000000000002E [S]>, > 10 > 00, 0, 'just another lousy test') > When I call the parameterless constructor, I get back a CosEvent object. > Likewise when I call the parameterized constructor using keyword parameters. > But when I call the parameterized constructor using positional parameters, I > get a tuple containing the CosEvent object and its parameters. > And it's that third result that I'm not understanding... > Am I missing (or maybe just misunderstanding) something? Why do I get a tuple > instead of just the 'naked' CosEvent > object? And why does it only happen when I use positional parameters? > Any help you can give is greatly appreciated. > Thanks, > Don > _______________________________________________ > Ironpython-users mailing list > Ironpython-users@python.org > https://mail.python.org/mailman/listinfo/ironpython-users RTFM http://ironpython.net/documentation/dotnet/dotnet.html#ref-and-out-parameters . -- Best regards, Ivan mailto:v...@mail.mipt.ru _______________________________________________ Ironpython-users mailing list Ironpython-users@python.org https://mail.python.org/mailman/listinfo/ironpython-users