如何使用表达式创建对象和调用对象方法

您可能会需要使用表达式来创建对象或调用方法。

创建对象

若要创建类型为 .NET 类的变量,请在 表达式 形状中构造对象。 .NET 类变量的属性包括构造函数。 如果使用默认构造函数,则只需直接声明该变量即可,就像声明任何其他变量(如 bool 类型或 int 类型)一样。

如果使用采用参数的构造函数,则使用 new 关键字 (keyword) ,后跟对象类和括号中的任何参数:

new MyClass(myParam1, myParam2)  

注意

对于某些实际上具有构造函数的对象,可能不会显示 “使用默认 构造函数”属性。 在这种情况下,将自动使用默认构造函数。如果试图使用其他构造函数,则将会产生错误。

调用方法

若要对 .NET 类对象调用方法,则需要向对象引用中附加一个句点和方法名称,后跟所有参数(括在括号中):

MyObject.MyMethod (param1)  

将消息作为参数进行传递和使用

若要将消息作为参数传递给对 .NET 类调用的方法,请首先在定义该类的项目中添加对 Microsoft.XLANGs.BaseTypes.dll 的引用,然后在方法签名中使用类型 XLANGMessage。

通过引用多部分消息类型,您可以使用类型 XLANGPart 来访问消息的各个部分:

MyMethod(XLANGMessage myMsg)  
{  
XLANGPart myPart = myMsg["Part1"];  
XmlDocument xmlDoc = (XmlDocument) myPart.RetrieveAs(typeof(XmlDocument));  
}  

对于调用本身,您只需提供消息的名称,就像使用任何其他参数一样:

MyObject.MyMethod(myMessage)  

您还可以将消息部分作为类型 XLANGPart 来传递。

.NET 成员调用

可以访问公共成员,但直接访问消息部分的成员除外。 若要直接访问消息部分的成员,必须将其升级为可分辨字段。

COM/COM+ 组件调用

XLANGs 生成 C# 代码。 所有用户声明的 XLANGs 变量都作为 C# 变量生成。 除了原子事务外,不存在其他特殊行为。 当服务组件 (即时,实现 System.EnterpriseServices.ServicedComponent) 的类的实例在原子范围内声明,然后 XLANGs 才会生成并使用真正的 DTC COM+ 事务。

如果某一变量在原子作用域中作为 L 值(即,它被写入)引用,但在外部作用域中声明,则将克隆该变量以支持回滚。 但是,当作为参数内传递时,可以在 .NET 函数调用中修改对象 ((如 XmlDocument) ),因此 XLANG 将错过对象正在写入且无法正确回滚。 此情况下的解决方法就是将此类对象作为 ref 参数传递。

起码组件在行为上应与在其他 C# 程序中的行为一样。

另请参阅

关于 BizTalk 消息上下文属性