ASP.Net WebApi 2 示例文本属性
ASP.Net WebApi 2 sample text attribute
有没有办法为 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,如果定义了则使用它的值而不是自动生成的值。
有没有办法为 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,如果定义了则使用它的值而不是自动生成的值。