If a method has input parameters and a return value, the Code Generation Engine appropriately creates the BDL calls for passing those parameters in and getting the return parameter. Therefore a method can have any combination of parameters and return values that can be accessed by the DotNet API functions (DotNetGetXX).
| C# Code | BDL Script |
|---|---|
[Transaction(Etranstype.TRANSTYPE_MAIN)]
public string TMain(string s, int n)
{
return s + n.ToString();
}
|
dcltrans
transaction Tmain
var
sReturn : string;
begin
DotNetSetString(hVuser1,"stringvalue");
DotNetSetInt(hVuser1, 123);
DotNetCallMethod(hVuser1,"TMain");
DotNetGetString(hVuser1, sReturn, sizeof(sReturn));
end;
|
By default the return parameter is stored in a variable with the name xReturn, or sReturn for strings. You can give the variable a meaningful name by applying the SilkPerformer.BdlParameter attribute to your return type and passing the variable name as the first parameter (sConcatParam in the following example).
| C# Code | BDL Script |
|---|---|
[Transaction(Etranstype.TRANSTYPE_MAIN)]
[return:BdlParameter("sConcatParam")]
public string TMain(string s, int n)
{
return s + n.ToString();
}
|
dcltrans
transaction Tmain
var
sConcatParam : string;
begin
DotNetSetString(hVuser1,"stringvalue");
DotNetSetInt(hVuser1, 123);
DotNetCallMethod(hVuser1,"TMain");
DotNetGetString(hVuser1, sConcatParam,
sizeof(sConcatParam));
end;
|
The ability to define a different name for the return variable is necessary for the Code Generation Engine to generate BDL code that passes values between function calls.