private static void CalculateHashData(LogicalOperationSignatureType signature)
        {
            List <string> hashSourceData = new List <string>();

            hashSourceData.Add(signature.logicalNamespace);
            hashSourceData.Add(signature.name);
            if (signature.Parameter != null)
            {
                foreach (var parameter in signature.Parameter)
                {
                    hashSourceData.AddRange(GetHashStringArray(parameter));
                }
            }
            else
            {
                hashSourceData.Add(String.Empty);
            }
            if (signature.ReturnValue != null)
            {
                hashSourceData.AddRange(GetHashStringArray(signature.ReturnValue));
            }
            else
            {
                hashSourceData.Add(String.Empty);
            }
            signature.sha1Hash = CalculateHashFromStringArray(hashSourceData.ToArray());
        }
        private static LogicalOperationSignatureType ConvertOperationSignature(OperationSignatureType opSignature)
        {
            var result = new LogicalOperationSignatureType
            {
                logicalNamespace = opSignature.logicalNamespace,
                name             = opSignature.name,
                Parameter        =
                    opSignature.Parameter == null
                                   ? null
                                   : opSignature.Parameter.Select(parameter => ConvertLogicalInformationType(parameter)).ToArray(),
                ReturnValue = opSignature.ReturnValue == null ? null : ConvertLogicalInformationType(opSignature.ReturnValue),
            };

            CalculateHashData(result);
            return(result);
        }