| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | using System;using System.Collections.Generic;using System.Linq;using System.Reflection;namespace Caliburn.Micro.Core{    /// <summary>    /// A collection of extension methods to help with differing reflection between the portable library and SL5    /// </summary>    internal static class PortableReflectionExtensions {        public static bool IsAssignableFrom(this Type t, Type c) {            return t.GetTypeInfo().IsAssignableFrom(c.GetTypeInfo());        }        public static Type[] GetGenericArguments(this Type t) {            return t.GetTypeInfo().GenericTypeArguments;        }        public static IEnumerable<PropertyInfo> GetProperties(this Type t) {            return t.GetRuntimeProperties();        }        public static IEnumerable<ConstructorInfo> GetConstructors(this Type t) {            return t.GetTypeInfo().DeclaredConstructors;        }        public static IEnumerable<Type> GetInterfaces(this Type t) {            return t.GetTypeInfo().ImplementedInterfaces;        }        public static IEnumerable<Type> GetTypes(this Assembly a) {            return a.DefinedTypes.Select(t => t.AsType());        }        public static bool IsAbstract(this Type t) {            return t.GetTypeInfo().IsAbstract;        }        public static bool IsInterface(this Type t) {            return t.GetTypeInfo().IsInterface;        }        public static bool IsGenericType(this Type t) {            return t.GetTypeInfo().IsGenericType;        }        public static MethodInfo GetMethod(this Type t, string name, Type[] parameters) {            return t.GetRuntimeMethod(name, parameters);        }    }}
 |