[Python.NET] Calling C# from Python 2.3

J. Merrill jvm_cop at spamcop.net
Tue Jan 4 18:25:56 CET 2005


The docn says that any .NET class to be used from COM must have a public no-parameters constructor.  I don't see one in any of the classes you defined.

Nesting classes the way you have is not, I don't think, going to be compatible with being called from COM.  The class you seem to be asking COM to create (the outer class) is not one that has a PrintHi method.

Also, some samples suggest that you might want to use more attributes:

[ClassInterface(ClassInterfaceType.AutoDispatch)]
[ProgID("Try2005.TestingCSBC")]

on the class you want to be callable.  I don't think those are required, but they'll increase the explicit info that you're providing to the code that builds the COM-callable-wrapper (the mechanism that exposes the .NET code to COM) for your class.


However, for each of those issues, I'm surprised that you're getting the message "cannot find the file specified."  You could try using FileMon (from sysinternals.com) to figure out what file it's looking for that's not being found; you could try calling this from VB or VBA and see if you've got the same problem; you could use OLEView.exe (or raw registry examination) to look at what the COM defn of your class is.

I'm sure that you can do simple calls to simple .NET objects from Python 2.x without using Python.NET -- but if you can't use the COM object from VB (when declaring the variable as type Object), you won't be able to use it via Python's win32com.client.Dispatch.

You might want to look at (perhaps wrapped)

http://aspn.activestate.com/ASPN/docs/ActivePython/2.3/pywin32/html/com/win32com/HTML/QuickStartClientCom.html

for info about using makepy.py to generate a Python "wrapper class" so that you don't have to work with a "raw" COM IDispatch.  (If you change 2.3 to 2.4 you get some more info, but apparently nothing about functionality only in 2.3.)

Good luck.

At 02:37 AM 1/3/2005, Amod Kulkarni wrote

>Hi,
>
>I know PythonNet has been specially designed to handle .NET/CLR compatibility but because of some other restrictions I want to use Python 2.3 to access a C# function. [snip]


J. Merrill / Analytical Software Corp 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/pythondotnet/attachments/20050104/96222b29/attachment.htm


More information about the PythonDotNet mailing list