Is there a way do provide samples for the web api help pages generation using attributes? I know that I can provide samples by going to /Areas/HelpPage/... but I want them all in one place with my code.
Something along these lines:
/// <summary>
/// userPrincipalName attribute of the user in AD
/// </summary>
[TextSample("[email protected]")]
public string UserPrincipalName;
This could be achieved by creating a custom attribute yourself, something like:
[AttributeUsage(AttributeTargets.Property)]
public class TextSampleAttribute : Attribute
{
public string Value { get; set; }
public TextSampleAttribute(string value)
{
Value = value;
}
}
And then modifying the SetPublicProperties method of ObjectGenerator like this:
private static void SetPublicProperties(Type type, object obj, Dictionary<Type, object> createdObjectReferences)
{
PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
ObjectGenerator objectGenerator = new ObjectGenerator();
foreach (PropertyInfo property in properties)
{
if (property.IsDefined(typeof (TextSampleAttribute), false))
{
object propertyValue = property.GetCustomAttribute<TextSampleAttribute>().Value;
property.SetValue(obj, propertyValue, null);
}
else if (property.CanWrite)
{
object propertyValue = objectGenerator.GenerateObject(property.PropertyType, createdObjectReferences);
property.SetValue(obj, propertyValue, null);
}
}
}
I've added a check to see if the TextSampleAttribute is defined and if so use it's value instead of the auto-generated one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With