public SmtpX509IdentifierEx(string smtpX509Identifier)
        {
            string certificateSubject;
            SmtpDomainWithSubdomains subjectCommonName;
            string certificateIssuer;

            SmtpDomainWithSubdomains[] certificateDomains;
            bool flag;

            if (!SmtpX509IdentifierEx.InternalTryParse(smtpX509Identifier, out certificateSubject, out subjectCommonName, out certificateIssuer, out certificateDomains, out flag))
            {
                string s = string.IsNullOrEmpty(smtpX509Identifier) ? string.Empty : smtpX509Identifier;
                string message;
                if (flag)
                {
                    message = DataStrings.InvalidDomainInSmtpX509Identifier(s);
                }
                else
                {
                    message = DataStrings.InvalidSmtpX509Identifier(s);
                }
                throw new StrongTypeFormatException(message, "SmtpX509IdentifierEx");
            }
            base.CertificateIssuer  = certificateIssuer;
            base.CertificateSubject = certificateSubject;
            base.SubjectCommonName  = subjectCommonName;
            this.CertificateDomains = certificateDomains;
        }
        public static bool TryParse(string s, out SmtpX509IdentifierEx result)
        {
            result = null;
            string subject;
            SmtpDomainWithSubdomains subjectCN;
            string issuer;

            SmtpDomainWithSubdomains[] domains;
            bool flag;

            if (!SmtpX509IdentifierEx.InternalTryParse(s, out subject, out subjectCN, out issuer, out domains, out flag))
            {
                return(false);
            }
            result = new SmtpX509IdentifierEx(subject, subjectCN, issuer, domains);
            return(true);
        }