Ejemplo n.º 1
0
        }         // func TryGetProperty

        /// <summary>Versucht einen Paremter zurückzugeben.</summary>
        /// <typeparam name="T">Rückgabewert.</typeparam>
        /// <param name="name">Parametername.</param>
        /// <param name="value">Wert der abgelegt wurde.</param>
        /// <returns><c>true</c>, wenn ein Wert gefunden wurde.</returns>
        public static bool TryGetProperty <T>(this IPropertyReadOnlyDictionary propertyDictionary, string name, out T value)
        {
            object ret;

            if (propertyDictionary.TryGetProperty(name, out ret) && ret != null)
            {
                try
                {
                    if (ret is T)
                    {
                        value = (T)ret;
                    }
                    else
                    {
                        value = (T)Procs.ChangeType(ret, typeof(T));
                    }
                    return(true);
                }
                catch (FormatException)
                {
                }
            }
            value = default(T);
            return(false);
        }         // func TryGetProperty
Ejemplo n.º 2
0
        }         // ctor

        public PropertyValue(string name, Type type, object value)
        {
            if (String.IsNullOrEmpty(name))
            {
                throw new ArgumentNullException("name");
            }

            this.name  = name;
            this.type  = type ?? typeof(object);
            this.value = Procs.ChangeType(value, this.type);
        }         // ctor
Ejemplo n.º 3
0
        }         // func ToXml

        private static object GetValue(XElement x)
        {
            var type = LuaType.GetType(x.Attribute("t")?.Value ?? "string", lateAllowed: false).Type;

            if (type == typeof(LuaTable))
            {
                return(CreateLuaTable(x));
            }
            else
            {
                return(Procs.ChangeType(x.Value, type));
            }
        }         // func GetValue
Ejemplo n.º 4
0
        }         // func GetAttribute

        /// <summary>Gibt den Inhalt eines Attributes typiriesiert zurück.</summary>
        /// <typeparam name="T">Datentyp der erwartet wird.</typeparam>
        /// <param name="x">XElement, an dem das Attribut erwartet wird.</param>
        /// <param name="attributeName">Name des Attributes.</param>
        /// <param name="default">Defaultwert, falls das Attribut nicht vorhanden ist oder der Wert nicht in den Typ konvertiert werden konnte.</param>
        /// <returns>Wert oder der default-Wert.</returns>
        public static T GetAttribute <T>(this XElement x, XName attributeName, T @default)
        {
            try
            {
                string sValue = GetAttribute(x, attributeName, (string)null);
                if (sValue == null)
                {
                    return(@default);
                }

                return(Procs.ChangeType <T>(sValue));
            }
            catch
            {
                return(@default);
            }
        }         // func GetAttribute
Ejemplo n.º 5
0
        }         // func ChangeType

        /// <summary>Generische Implementierung von <c>ChangeType</c>.</summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value"></param>
        /// <returns></returns>
        public static T ChangeType <T>(this object value)
        => (T)Procs.ChangeType(value, typeof(T));