12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- namespace Ant.Extensions
- {
- internal static class ReflectionExtensions
- {
- public static Type GetMemberInfoType(this MemberInfo member)
- {
- if (member == null)
- throw new ArgumentNullException("member");
- if (member.MemberType == MemberTypes.Property)
- return ((PropertyInfo)member).PropertyType;
- if (member.MemberType == MemberTypes.Field)
- return ((FieldInfo)member).FieldType;
- if (member is MethodInfo)
- return ((MethodInfo)member).ReturnType;
- if (member is ConstructorInfo)
- return ((ConstructorInfo)member).ReflectedType;
- return null;
- }
- public static Type GetPropertyOrFieldType(this MemberInfo propertyOrField)
- {
- if (propertyOrField.MemberType == MemberTypes.Property)
- return ((PropertyInfo)propertyOrField).PropertyType;
- if (propertyOrField.MemberType == MemberTypes.Field)
- return ((FieldInfo)propertyOrField).FieldType;
- throw new NotSupportedException();
- }
- public static void SetPropertyOrFieldValue(this MemberInfo propertyOrField, object obj, object value)
- {
- if (propertyOrField.MemberType == MemberTypes.Property)
- ((PropertyInfo)propertyOrField).SetValue(obj, value, null);
- else if (propertyOrField.MemberType == MemberTypes.Field)
- ((FieldInfo)propertyOrField).SetValue(obj, value);
- throw new ArgumentException();
- }
- public static object GetPropertyOrFieldValue(this MemberInfo propertyOrField, object obj)
- {
- if (propertyOrField.MemberType == MemberTypes.Property)
- return ((PropertyInfo)propertyOrField).GetValue(obj, null);
- else if (propertyOrField.MemberType == MemberTypes.Field)
- return ((FieldInfo)propertyOrField).GetValue(obj);
- throw new ArgumentException();
- }
- }
- }
|