private static IEnumerable<SpyableObject.Method> GetSpyableObjectMethods(ISpyableProvider spyableProvider) { return spyableProvider.SpyableObject .GetType() .GetMethods(Flags) .Where(f => !f.IsSpecialName && f.HasAttribute(typeof (SpyAttribute)) && f.HasNoArguments()) .Select(info => new SpyableObject.Method { Name = info.Name, Type = info.ReturnType, SpyableObject = spyableProvider.SpyableObject }); }
private static IEnumerable<SpyableObject.Field> GetSpyableObjectFields(ISpyableProvider spyableProvider) { return spyableProvider.SpyableObject .GetType() .GetFields(Flags) .Where(f => !f.IsSpecialName && f.HasAttribute(typeof (SpyAttribute))) .Select(info => new SpyableObject.Field { Name = info.Name, Type = info.FieldType, SpyableObject = spyableProvider.SpyableObject }); }
private static IEnumerable<SpyableObject.Property> GetSpyableObjectProperties(ISpyableProvider spyableProvider) { return spyableProvider.SpyableObject .GetType() .GetProperties(Flags) .Where(f => !f.IsSpecialName && !f.IsIndexed() && f.HasAttribute(typeof (SpyAttribute))) .Select(info => new SpyableObject.Property { Name = info.Name, Type = info.PropertyType, SpyableObject = spyableProvider.SpyableObject }); }