MongoDB.Driver.MongoConnectionStringBuilder.this C# (CSharp) Method

this() public method

Gets or sets individual settings by keyword.
public this ( string keyword ) : object
keyword string The keyword.
return object
        public override object this[string keyword]
        {
            get
            {
                if (keyword == null) { throw new ArgumentNullException("keyword"); }
                return base[__canonicalKeywords[keyword.ToLower()]];
            }
            set
            {
                if (keyword == null) { throw new ArgumentNullException("keyword"); }
                ReadPreference readPreference;
                switch (keyword.ToLower())
                {
                    case "connect":
                        if (value is string)
                        {
                            ConnectionMode = (ConnectionMode)Enum.Parse(typeof(ConnectionMode), (string)value, true); // ignoreCase
                        }
                        else
                        {
                            ConnectionMode = (ConnectionMode)value;
                        }
                        break;
                    case "connecttimeout":
                    case "connecttimeoutms":
                        ConnectTimeout = ToTimeSpan(keyword, value);
                        break;
                    case "database":
                        DatabaseName = (string)value;
                        break;
                    case "fsync":
                        FSync = Convert.ToBoolean(value);
                        break;
                    case "guids":
                    case "uuidrepresentation":
                        GuidRepresentation = (GuidRepresentation)Enum.Parse(typeof(GuidRepresentation), (string)value, true); // ignoreCase
                        break;
                    case "ipv6":
                        IPv6 = Convert.ToBoolean(value);
                        break;
                    case "j":
                    case "journal":
                        Journal = Convert.ToBoolean(value);
                        break;
                    case "maxidletime":
                    case "maxidletimems":
                        MaxConnectionIdleTime = ToTimeSpan(keyword, value);
                        break;
                    case "maxlifetime":
                    case "maxlifetimems":
                        MaxConnectionLifeTime = ToTimeSpan(keyword, value);
                        break;
                    case "maxpoolsize":
                        MaxConnectionPoolSize = Convert.ToInt32(value);
                        break;
                    case "minpoolsize":
                        MinConnectionPoolSize = Convert.ToInt32(value);
                        break;
                    case "password":
                        Password = (string)value;
                        break;
                    case "readpreference":
                        readPreference = _readPreference ?? new ReadPreference();
                        if (value is string)
                        {
                            readPreference.ReadPreferenceMode = (ReadPreferenceMode)Enum.Parse(typeof(ReadPreferenceMode), (string)value, true); // ignoreCase
                        }
                        else
                        {
                            readPreference.ReadPreferenceMode = (ReadPreferenceMode)value;
                        }
                        ReadPreference = readPreference;
                        break;
                    case "readpreferencetags":
                        readPreference = _readPreference ?? new ReadPreference();
                        if (value is string)
                        {
                            readPreference.TagSets = ParseReplicaSetTagSets((string)value);
                        }
                        else
                        {
                            readPreference.TagSets = (IEnumerable<ReplicaSetTagSet>)value;
                        }
                        ReadPreference = readPreference;
                        break;
                    case "replicaset":
                        ReplicaSetName = (string)value;
                        break;
                    case "safe":
                        var safe = Convert.ToBoolean(value);
                        if (_w == null)
                        {
                            W = safe ? 1 : 0;
                        }
                        else
                        {
                            if (safe)
                            {
                                // don't overwrite existing W value unless it's 0
                                var wCount = _w as WriteConcern.WCount;
                                if (wCount != null && wCount.Value == 0)
                                {
                                    W = 1;
                                }
                            }
                            else
                            {
                                W = 0;
                            }
                        }
                        break;
                    case "secondaryacceptablelatency":
                    case "secondaryacceptablelatencyms":
                        SecondaryAcceptableLatency = ToTimeSpan(keyword, value);
                        break;
                    case "server":
                    case "servers":
                        Servers = ParseServersString((string)value);
                        break;
                    case "slaveok":
#pragma warning disable 618
                        SlaveOk = Convert.ToBoolean(value);
#pragma warning restore
                        break;
                    case "sockettimeout":
                    case "sockettimeoutms":
                        SocketTimeout = ToTimeSpan(keyword, value);
                        break;
                    case "ssl":
                        UseSsl = Convert.ToBoolean(value);
                        break;
                    case "sslverifycertificate":
                        VerifySslCertificate = Convert.ToBoolean(value);
                        break;
                    case "username":
                        Username = (string)value;
                        break;
                    case "w":
                        if (IsIntegerType(value))
                        {
                            W = new WriteConcern.WCount(Convert.ToInt32(value));
                        }
                        else if (value is string)
                        {
                            W = WriteConcern.WValue.Parse((string)value);
                        }
                        else
                        {
                            W = (WriteConcern.WValue)value;
                        }
                        break;
                    case "waitqueuemultiple":
                        WaitQueueMultiple = Convert.ToDouble(value);
                        break;
                    case "waitqueuesize":
                        WaitQueueSize = Convert.ToInt32(value);
                        break;
                    case "waitqueuetimeout":
                    case "waitqueuetimeoutms":
                        WaitQueueTimeout = ToTimeSpan(keyword, value);
                        break;
                    case "wtimeout":
                    case "wtimeoutms":
                        WTimeout = ToTimeSpan(keyword, value);
                        break;
                    default:
                        var message = string.Format("Invalid keyword '{0}'.", keyword);
                        throw new ArgumentException(message);
                }
            }
        }