private object GetProviderObjectFromMember(MemberInfo member) { object providerObject = null; object instance = null; switch (member.MemberType) { case MemberTypes.Property: PropertyInfo providerProperty = member as PropertyInfo; MethodInfo getMethod = providerProperty.GetGetMethod(true); if (!getMethod.IsStatic) { instance = ProviderCache.GetInstanceOf(providerType); } providerObject = providerProperty.GetValue(instance, null); break; case MemberTypes.Method: MethodInfo providerMethod = member as MethodInfo; if (!providerMethod.IsStatic) { instance = ProviderCache.GetInstanceOf(providerType); } providerObject = providerMethod.Invoke(instance, null); break; case MemberTypes.Field: FieldInfo providerField = member as FieldInfo; if (!providerField.IsStatic) { instance = ProviderCache.GetInstanceOf(providerType); } providerObject = providerField.GetValue(instance); break; } return(providerObject); }
public System.Collections.IEnumerable GetDataFor(System.Reflection.ParameterInfo parameter) { ArrayList datapoints = new ArrayList(); Type parameterType = parameter.ParameterType; MemberInfo method = parameter.Member; Type fixtureType = method.ReflectedType; foreach (FieldInfo field in fixtureType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)) { if (field.FieldType == parameterType && Reflect.HasAttribute(field, DatapointAttribute, true)) { datapoints.Add(field.GetValue(ProviderCache.GetInstanceOf(fixtureType))); } else if (field.FieldType.IsArray && field.FieldType.GetElementType() == parameterType && Reflect.HasAttribute(field, DatapointsAttribute, true)) { datapoints.AddRange((ICollection)field.GetValue(ProviderCache.GetInstanceOf(fixtureType))); } } return(datapoints); }
public System.Collections.IEnumerable GetDataFor(System.Reflection.ParameterInfo parameter) { ArrayList datapoints = new ArrayList(); Type parameterType = parameter.ParameterType; Type fixtureType = parameter.Member.ReflectedType; foreach (MemberInfo member in fixtureType.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance)) { if (Reflect.HasAttribute(member, DatapointAttribute, true)) { if (GetTypeFromMemberInfo(member) == parameterType && member.MemberType == MemberTypes.Field) { FieldInfo field = member as FieldInfo; if (field.IsStatic) { datapoints.Add(field.GetValue(null)); } else { datapoints.Add(field.GetValue(ProviderCache.GetInstanceOf(fixtureType))); } } } else if (Reflect.HasAttribute(member, DatapointsAttribute, true)) { if (GetElementTypeFromMemberInfo(member) == parameterType) { object instance; switch (member.MemberType) { case MemberTypes.Field: FieldInfo field = member as FieldInfo; instance = field.IsStatic ? null : ProviderCache.GetInstanceOf(fixtureType); foreach (object data in (IEnumerable)field.GetValue(instance)) { datapoints.Add(data); } break; case MemberTypes.Property: PropertyInfo property = member as PropertyInfo; MethodInfo getMethod = property.GetGetMethod(true); instance = getMethod.IsStatic ? null : ProviderCache.GetInstanceOf(fixtureType); foreach (object data in (IEnumerable)property.GetValue(instance, null)) { datapoints.Add(data); } break; case MemberTypes.Method: MethodInfo method = member as MethodInfo; instance = method.IsStatic ? null : ProviderCache.GetInstanceOf(fixtureType); foreach (object data in (IEnumerable)method.Invoke(instance, Type.EmptyTypes)) { datapoints.Add(data); } break; } } } } if (datapoints.Count == 0) { if (parameterType == typeof(bool)) { datapoints.Add(true); datapoints.Add(false); } else if (parameterType.IsEnum) { datapoints.AddRange(System.Enum.GetValues(parameterType)); } } return(datapoints); }