private static void CompareNewWay(NameAndType expectedField, PropertyInfo propertyInfo) { var foundAttributes = CustomAttributeData.GetCustomAttributes(propertyInfo) .AsQueryable().OrderBy(a => a.ToString()).ToList(); Assert.AreEqual(expectedField.ParameterAttributes.Count, foundAttributes.Count(), "For Field: " + propertyInfo.Name); if (foundAttributes.Count() > 0) { for (int j = 0; j < foundAttributes.Count(); j++) { //Assert.AreEqual(expectedField.Attributes[j], foundAttributes[j].ToString(), "For Field: " + propertyInfo.Name); Assert.IsTrue( foundAttributes[j].ToString().StartsWith( expectedField.ParameterAttributes[j].AttributeNameStartsWith)); var namedParameters = foundAttributes[j].NamedArguments.ToList(); Assert.AreEqual(expectedField.ParameterAttributes[j].NamedParameters.Count, namedParameters.Count, "For Field: " + propertyInfo.Name + " For Attribute: " + foundAttributes[j]); if (namedParameters.Count > 0) { var namedParametersAsStrings = new List <string>(); foreach (var namedParameter in namedParameters) { namedParametersAsStrings.Add(namedParameter.ToString()); } foreach (var expectedParameter in expectedField.ParameterAttributes[j].NamedParameters) { Assert.IsTrue(namedParametersAsStrings.Contains(expectedParameter), "For Field: " + propertyInfo.Name + " For Attribute: " + foundAttributes[j] + "Expected Parameter: " + expectedParameter + " Found: " + namedParametersAsStrings.ParseList()); } } } } }
private static void CompareOldWay(NameAndType expectedField, PropertyInfo propertyInfo) { var foundAttributes = CustomAttributeData.GetCustomAttributes(propertyInfo) .AsQueryable().OrderBy(a => a.ToString()).ToList(); Assert.AreEqual(expectedField.Attributes.Count, foundAttributes.Count(), "For Field: " + propertyInfo.Name); if (foundAttributes.Count() > 0) { for (int j = 0; j < foundAttributes.Count(); j++) { Assert.AreEqual(expectedField.Attributes[j], foundAttributes[j].ToString(), "For Field: " + propertyInfo.Name); } } }