编程语言
首页 > 编程语言> > C#-ASP.Net WebApi 2示例文本属性

C#-ASP.Net WebApi 2示例文本属性

作者:互联网

有没有一种方法可以提供使用属性生成Web API帮助页面的示例?我知道我可以通过/ Areas / HelpPage /提供样品.
但是我希望它们与我的代码一起放在一个地方.

遵循以下原则:

    /// <summary>
    /// userPrincipalName attribute of the user in AD
    /// </summary>
    [TextSample("john.smith@contoso.com")]
    public string UserPrincipalName;

解决方法:

这可以通过自己创建自定义属性来实现,例如:

[AttributeUsage(AttributeTargets.Property)]
public class TextSampleAttribute : Attribute
{
    public string Value { get; set; }

    public TextSampleAttribute(string value)
    {
        Value = value;
    }
}

然后像这样修改ObjectGenerator的SetPublicProperties方法:

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);
            }
        }
    }

我添加了一项检查,以查看是否定义了TextSampleAttribute,如果已定义,请使用其值代替自动生成的值.

标签:asp-net-web-api,asp-net-web-api2,asp-net-web-api-helppages,asp-net,c
来源: https://codeday.me/bug/20191120/2044213.html