由于很多属性都是由避免未密封的属性我正在寻找一种设置属性值的解决方案(我的第一个想法是继承该类并设置一个检查网络配置的构造函数 - 对于密封类来说这是不可能的):
有的是ApiExplorerSettingsAttribute
在命名空间中System.Web.Http.Description
我希望以下 API 操作隐藏在案例中,web-config 中的值为 false:
<Api.Properties.Settings>
<setting name="Hoster">
<value>False</value>
</setting>
</Api.Properties.Settings>
该操作将如下所示:
[HttpGet, Route("api/bdlg")]
[SwaggerResponse(HttpStatusCode.OK, Type = typeof(BdlgDataStorage))]
[ApiExplorerSettings(IgnoreApi = Properties.Settings.Default.Hoster)]
private async Task<BdlgDataStorage> GetBdlgStorageValues()
{
using (var context = new BdlgContext())
return context.BdlgDataStorages
.Include(s=>s.ChangeTrack)
.Where(w=>w.Isle > 56)
.Select(selectorFunction)
.ToListAsync();
}
重要的一行是:
[ApiExplorerSettings(IgnoreApi = Properties.Settings.Default.Hoster)]
在这里,我得到一个编译器错误:
属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式
有人知道如何将 IgnoreApi 的值设置为与 web-config 中的值相同吗?
你不能。属性被静态编译到程序集中。它们属于成员的元数据。您无法在运行时更改属性。
你必须找到另一种方式来影响ApiExplorerSettings
。这篇文章似乎就是您正在寻找的内容:动态忽略控制器上的 WebAPI 方法以获取 api 资源管理器文档 https://stackoverflow.com/q/27951728/993547.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)