Feedback

C# - Objekt Indexer

Veröffentlicht von am 04.04.2012
(0 Bewertungen)
Objektindexer um auf die Werte der einzelnen propertys der jeweiligen Objektinstanz mittels dem Namen zuzugreifen und diese zu setzen.

Die Methode setPropertyValue(PropertyInfo propertyInfo, object valueToSet)ist dafür zuständig den jeweilig übergebenen Wert in den Datentyp der property zu konvertieren.
 /// <summary>
        /// Property indexer
        /// </summary>
        public virtual object this[string key]
        {
            get
            {
                PropertyInfo info = this.GetType().GetProperty(key);
                if (info == null)
                    return null;
                return info.GetValue(this, null);
            }
            set
            {
                PropertyInfo info = this.GetType().GetProperty(key);
                if (info != null)
                    this.setPropertyValue(info, value);
            }
        }

/// <summary>
        /// Sets the property value.
        /// </summary>
        /// <param name="propertyInfo">The property info.</param>
        /// <param name="valueToSet">The value to set.</param>
        private void setPropertyValue(PropertyInfo propertyInfo, object valueToSet)
        {
            var targetType = propertyInfo.PropertyType.IsGenericType && propertyInfo.PropertyType.GetGenericTypeDefinition().Equals(typeof(System.Nullable<>)) ? Nullable.GetUnderlyingType(propertyInfo.PropertyType) : propertyInfo.PropertyType;
            var convertedValue = Convert.ChangeType(valueToSet, targetType);

            propertyInfo.SetValue(this, convertedValue, null);
        }



Abgelegt unter Indexer, Objekt, Object.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!