[Ironpython-users] issue creating object from third-party assembly
Ivan Pozdeev
vano at mail.mipt.ru
Tue Apr 29 22:59:20 CEST 2014
> 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 at 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:vano at mail.mipt.ru
More information about the Ironpython-users
mailing list