在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())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)