如何利用IronPython实现.NET接口

如何利用IronPython实现.NET接口,第1张

利用IronPython实现.NET接口

在IronPython2.6中新增加了clrtype功能,这样我们就可以在IronPython中实现接口以及特性类的功能。

要想使用clrtype,需要先引入clrtype.py这个文件,在安装完IronPython之后,我并没有在安装目录下发现这个文件,但是在IronPython2.6的Samples里找到了这个文件,Copy过来就OK了。

先定义一个C#的接口,然后将其改写为Python的,代码如下:

using System

public interface IMyInterface

{

string SayAge(int age)

}

public class MyClass:IMyInterface

{

public string SayAge(int age)

{

return "hello " + age.ToString()

}

}

对就的Python程序如下所示:

# coding=gb2312

import clr

import clrtype

from System import *

class IMyInterface(object):

__metaclass__ = clrtype.ClrInterface#声明该类为接口类型

_clrnamespace = "TestPython" #添加命名空间

@clrtype.accepts(int)

@clrtype.returns(str)

def SayAge(self, age):

raise RuntimeError("this should not get called")

class MyClass(IMyInterface):

__metaclass__ = clrtype.ClrClass#声明该类为类

_clrnamespace = "TestPython"#添加命名空间

def SayAge(self, age):

return "hello " + str(age)

mc = MyClass()

Console.Write(mc.SayAge(10))

可以的,把项目的类型设成类库,将所有的函数用Public修饰附封装在类里面,生成dll文件。这样别人就可以在别人项目属性的引用页里面添加对你的dll文件的引用,然后导入命名空间,直接使用了。

比如说,在一个项目里:

NameSpace Controller

Public Class ControlMachine

Public Sub Boot()

End Sub

Public Sub Shutdown()

End Sub

End Class

End NameSpace

进入另一个项目的项目属性,进入引用页,添加到那个dll文件的引用。在代码中:

Imports Controller '加在代码文档的最顶端

使用:

Dim controller As New ControlMachine

controller.Boot()

controller.Shutdown()

希望你能了解,不懂再追问

以axis2来说,你需要对方提供AxisServiceStub类文件(就是wsdl文件),假入对方有一个ShowName的方法,我现在用axis2来调用,coding 如下

//初始化Sub类

AxisServiceStub stub = new AxisServiceStub()

//传递AxisServiceStub.ShowName对象,相关参数在这边赋值。

AxisServiceStub.ShowName command = new AxisServiceStub.ShowName()

command.setName("Hello!")

//取得返回值

//String name = stub.showName(command).get_return()

System.out.println(stub.showName(command).get_return())


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11667291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存