Exemple #1
0
        /// <summary>
        /// source 静的フィールド fieldName の index 番目に値を設定します。
        /// </summary>
        /// <param name="source">設定するフィールドを静的に保持するインスタンス。</param>
        /// <param name="fieldName">設定するフィールド名。</param>
        /// <param name="index">設定するフィールドのインデックス。</param>
        /// <param name="value">設定する値。</param>
        public static void ArrayField(Type type, string fieldName, int index, object value)
        {
            var field = type.GetField(fieldName, Reflector.InstanceAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(type, fieldName);
            }

            var obj = field.GetValue(null);

            if (obj == null)
            {
                throw FieldReflectionException.NullCollection(type, fieldName);
            }

            var list = obj as System.Collections.IList;

            if (list == null)
            {
                throw FieldReflectionException.CannotSetToCollection(type, fieldName);
            }

            list[index] = value;
        }
Exemple #2
0
        /// <summary>
        /// source インスタンスのメンバフィールド fieldName の index 番目の値を取得します。
        /// </summary>
        /// <param name="source">取得するフィールドをメンバとして保持するインスタンス。</param>
        /// <param name="fieldName">取得するフィールド名。</param>
        /// <param name="index">取得するフィールドのインデックス。</param>
        /// <returns>指定したフィールドの index 番目の値。</returns>
        public static object ArrayField(this object source, string fieldName, int index)
        {
            var field = source.GetType().GetField(fieldName, Reflector.InstanceAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(source.GetType(), fieldName);
            }

            var obj = field.GetValue(source);

            if (obj == null)
            {
                throw FieldReflectionException.NullCollection(source.GetType(), fieldName);
            }

            var list = obj as System.Collections.IList;

            if (list == null)
            {
                throw FieldReflectionException.CannotSetToCollection(source.GetType(), fieldName);
            }

            return(list[index]);
        }
Exemple #3
0
        /// <summary>
        /// source インスタンスのメンバフィールド fieldName に値 value を設定します。
        /// </summary>
        /// <param name="source">設定するフィールドをメンバとして保持するインスタンス。</param>
        /// <param name="fieldName">設定するフィールド名。</param>
        /// <param name="value">設定する値。</param>
        public static void Field(this object source, string fieldName, object value)
        {
            var field = source.GetType().GetField(fieldName, Reflector.InstanceAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(source.GetType(), fieldName);
            }

            field.SetValue(source, value);
        }
Exemple #4
0
        /// <summary>
        /// type 型の静的フィールド fieldName に値 value を設定します。
        /// </summary>
        /// <param name="type">設定するフィールドを静的に保持する型。</param>
        /// <param name="fieldName">設定するフィールド名。</param>
        /// <param name="value">設定する値。</param>
        public static void Field(Type type, string fieldName, object value)
        {
            var field = type.GetField(fieldName, Reflector.StaticAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(type, fieldName);
            }

            field.SetValue(null, value);
        }
Exemple #5
0
        /// <summary>
        /// type 型の静的フィールド fieldName の値を取得します。
        /// </summary>
        /// <param name="type">取得するフィールドを静的に保持する型。</param>
        /// <param name="fieldName">取得するフィールド名。</param>
        /// <returns>指定したフィールドの値。</returns>
        public static object Field(Type type, string fieldName)
        {
            var field = type.GetField(fieldName, Reflector.StaticAllFlags);

            if (field == null)
            {
                throw FieldReflectionException.NotFound(type, fieldName);
            }

            return(field.GetValue(null));
        }