private static string CreateMessage(ASICameraDll.ASI_ERROR_CODE errorCode, MethodBase callingMethod, object[] parameters)
        {
            StringBuilder bld = new StringBuilder();

            bld.AppendLine("Error '" + errorCode + "' from call to ");
            bld.Append("ASI" + callingMethod.Name + "(");
            var paramNames = callingMethod.GetParameters().Select(x => x.Name);

            foreach (var line in paramNames.Zip(parameters, (s, o) => string.Format("{0}={1}, ", s, o)))
            {
                bld.Append(line);
            }
            bld.Remove(bld.Length - 2, 2);
            bld.Append(")");
            return(bld.ToString());
        }
 public ASICameraException(ASICameraDll.ASI_ERROR_CODE errorCode, MethodBase callingMethod, object[] parameters) : base(CreateMessage(errorCode, callingMethod, parameters))
 {
 }
 public ASICameraException(ASICameraDll.ASI_ERROR_CODE errorCode) : base(errorCode.ToString())
 {
 }