作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码位于 Swashbuckle.Swagger.IOperationFilter
类(class)。
List<CustomAttributeData> controllerAttributes = apiDescription
.ActionDescriptor
.ControllerDescriptor
.ControllerType
.CustomAttributes
.Where(a => a.AttributeType == typeof(SwaggerFileInFormDataAttribute))
.ToList();
我正在成功获取集合。我要转换收藏
List<CustomAttributeData>
进入我的自定义属性集合
List<SwaggerFileInFormDataAttribute>
.
System.Reflection.CustomAttributeData
类到我的自定义属性
SwaggerFileInFormDataAttribute
.
SwaggerFileInFormDataAttribute
属性看起来像。
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class SwaggerFileInFormDataAttribute : Attribute
{
private ICollection<string> displayNames;
public SwaggerFileInFormDataAttribute()
{
this.DisplayNames = new List<string> { "File" };
}
public SwaggerFileInFormDataAttribute(params string[] displayNames)
{
this.DisplayNames = displayNames;
}
public ICollection<string> DisplayNames
{
get
{
if (this.displayNames == null)
return new List<string> { "File" };
else
return this.displayNames;
}
set => displayNames = value;
}
}
成功转换后
List<CustomAttributeData>
至
List<SwaggerFileInFormDataAttribute>
我将使用类
SwaggerFileInFormDataAttribute
中显示的属性命名
DisplayNames
.
最佳答案
第一个解决方案:
List<SwaggerFileInFormDataAttribute> customControllerAttributes = apiDescription
.ActionDescriptor
.ControllerDescriptor
.ControllerType
.CustomAttributes
.Where(a => a.AttributeType == typeof(SwaggerFileInFormDataAttribute))
.Select(a =>
{
ReadOnlyCollection<CustomAttributeTypedArgument> costuctorArgumentsReadOnlyCollection = (ReadOnlyCollection<CustomAttributeTypedArgument>)a.ConstructorArguments.Select(x => x.Value).FirstOrDefault();
string[] contructorParams = costuctorArgumentsReadOnlyCollection?.ToArray().Select(x => x.Value.ToString()).ToArray();
SwaggerFileInFormDataAttribute myCustomAttr = (SwaggerFileInFormDataAttribute)Activator.CreateInstance(a.AttributeType, contructorParams);
return myCustomAttr;
})
.ToList();
解释:两个变量
costuctorArgumentsReadOnlyCollection
和
contructorParams
如果所需属性的构造函数为空,则可以跳过。
(SwaggerFileInFormDataAttribute)Activator.CreateInstance(a.AttributeType, null);
第二种解决方案:
CustomAttributeData
IOperationFilter
中的类像那样:
List<SwaggerFileInFormDataAttribute> controllerAttributes = apiDescription
.ActionDescriptor
.ControllerDescriptor
.GetCustomAttributes<SwaggerFileInFormDataAttribute>()
.ToList();
关于C# CustomAttributeData 类到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63583389/
我有以下代码位于 Swashbuckle.Swagger.IOperationFilter类(class)。 List controllerAttributes = apiDescription
问题。有没有办法根据我的自定义属性的给定实例(比如 MyAttribute)获取 CustomAttributeData 的实例?还是相反? 我为什么需要这个? MyAttribute 的实例包含我感
我制作了一个生成器类,它基于实现接口(interface)的接口(interface)构建代理类。 查看我在 Build a Proxy class based on Interface withou
我将模型放入带有 Core 的类库中。我已经进行了第一次迁移以测试我的模型的一部分,但在进行了重大改进之后,我删除了我的数据库和迁移以只有一个 V1 迁移。 问题是,在删除之后,当我尝试 add-mi
我是一名优秀的程序员,十分优秀!