[IronPython] How to do the typeof( ) call on an IronPython implemented class in C#?
sourishkrout
sebastiantiedtke at gmail.com
Tue Mar 17 21:30:50 CET 2009
Hi Jan,
I don't know whether you figured it out yourself in the meantime, but I have
had the same problem today and made it work. So I just wanted to share my
brilliance with you... :-)
Here you go:
clr.GetClrType(CalculatorService)
The clr object offers the "GetClrType" method which returns the type.
I used it in a different context though: XML (De-)Serialization. Worked very
well.
Let me know whether you had success...
- Sebastian
Jan R-2 wrote:
>
> Hello IronPython Experts.
>
>
> How to do the typeof( ) call on an IronPython implemented class in C#?
>
> The need to do a typeof(..) comes from implementing services in Windows
> Communication Foundation (WCF) in IronPython. The WCF get-statrted sample
> uses the overloaded constructor of the ServiceHost class that takes a
> System.Type:
>
> ServiceHost selfHost = new ServiceHost(typeof(CalculatorService),
> baseAddress);
>
>
> I want to replace the CalculatorService with a IronPython class
> PyCalculator. Note the typeof(...).
>
> I have tried the following without success, in order to give an instance
> of
> the IronPython class to the ServiceHost constructor :
>
> ICalculator pyCalc = (ICalculator)pyr.getInstance("PyCalculator");
> ServiceHost selfHost = new ServiceHost( (object) pyCalc, baseAddress);
>
> The IronPython class is attached below. The code results in an exception,
> because the attribute InstanceContextMode have to be set to
> InstanceContextMode.Single.
>
> The WCF get-started sample is here:
> http://msdn.microsoft.com/da-dk/library/ms734712(en-us).aspx
>
> Can anyone help me out?
>
>
> Regards
> Jan Rouvillain
>
> IronPython code:
>
> import clr
> clr.AddReference('CalculatorServer')
> from Microsoft.ServiceModel.Samples import ICalculator
>
> class PyCalculator(ICalculator):
> "Implements calculator services"
>
> def Add(self, a, b):
> print 'a ' + a + ' + b ' + b
> return a+b
>
> def Subtract(self, a, b):
> print 'a ' + a + ' - b ' + b
> return a-b
>
> def Multiply(self, a, b):
> print 'a ' + a + ' * b ' + b
> return a*b
>
> def Divide(self, a, b):
> print 'a ' + a + ' // b ' + b
> return a/b
>
> C# interface declaration:
>
> namespace Microsoft.ServiceModel.Samples
> {
> [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
> public interface ICalculator
> {
> // Step7: Create the method declaration for the contract.
> [OperationContract]
> double Add(double n1, double n2);
> [OperationContract]
> double Subtract(double n1, double n2);
> [OperationContract]
> double Multiply(double n1, double n2);
> [OperationContract]
> double Divide(double n1, double n2);
> }
> }
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
--
View this message in context: http://www.nabble.com/How-to-do-the-typeof%28-%29-call-on-an-IronPython-implemented-class-in-C---tp22055752p22532007.html
Sent from the IronPython mailing list archive at Nabble.com.
More information about the Ironpython-users
mailing list