public IList<object> Call(NodeId objectId, NodeId methodId, params object[] args)
{
VariantCollection inputArguments = new VariantCollection();
if (args != null)
{
for (int ii = 0; ii < args.Length; ii++)
{
inputArguments.Add(new Variant(args[ii]));
}
}
CallMethodRequest request = new CallMethodRequest();
request.ObjectId = objectId;
request.MethodId = methodId;
request.InputArguments = inputArguments;
CallMethodRequestCollection requests = new CallMethodRequestCollection();
requests.Add(request);
CallMethodResultCollection results;
DiagnosticInfoCollection diagnosticInfos;
ResponseHeader responseHeader = Call(
null,
requests,
out results,
out diagnosticInfos);
ClientBase.ValidateResponse(results, requests);
ClientBase.ValidateDiagnosticInfos(diagnosticInfos, requests);
if (StatusCode.IsBad(results[0].StatusCode))
{
throw ServiceResultException.Create(results[0].StatusCode, 0, diagnosticInfos, responseHeader.StringTable);
}
List<object> outputArguments = new List<object>();
foreach (Variant arg in results[0].OutputArguments)
{
outputArguments.Add(arg.Value);
}
return outputArguments;
}
#endregion