c# - 如何创建 IOptions来自 T 的自定义实例(不是通过 DI)
问题描述
我想将值传递给IOptions<T>
参数。
我只能找到使用IOptions<T>
with configuration 的示例,但我需要在调用方法时定义自定义值。
解决方案
我假设您正在询问如何IOptions<TOptionClass>
在您指定T
要使用的实例的位置创建自定义值。您可以这样做:
假设您有一个IdentityOptions
在您的示例中调用的类。
首先创建它的一个实例:
var optionsInstance = new IdentityOptions();
// ... set properties on it as needed
然后将其转换为选项容器:
IOptions<IdentityOptions> optionParameter = Options.Create(optionsInstance);
请参阅MSDN。
更新:我比 OP 自己的解决方案慢了几秒钟。让我添加一个可能的扩展方法解决方案,所以这个答案仍然有一些附加值(未经测试):
public static IOptions<TOptions> AsIOption<TOptions>(this TOptions optionInstance) where TOptions : class, new()
{
return Microsoft.Extensions.Options.Options.Create(optionInstance);
}
然后您可以将其用作optionInstance.AsIOption()
. 我不确定是否值得付出努力(Object
如果没有必要,我不喜欢污染课堂),但肯定是可能的,并且如果您在许多不同的地方使用这种技术可能会变得有用。
推荐阅读
- python - 在 scikit-learn 的 TfidfVectorizer 中传递非英文文本
- python - 使用容器隔离 dag 中的代码依赖关系 - 气流
- typescript - 如何让 skipLibCheck 只忽略依赖项中的 d.ts 而不是我们自己的 d.ts 文件?
- asp.net - 正则表达式验证字符串是否不包含特殊字符列表和允许的特殊字符后跟字母数字
- javascript - express:如何在使用 nginx 作为反向代理时获取客户端 IP 而不是 docker ip?
- c# - 手动创建 SignalR 集线器上下文
- magento2 - 安装 magento 2.3.5-p1 后,管理页面只显示加载光标
- java - 如何在 Android Studio 中发出 http post 请求?
- c# - 具有类型约束的泛型的 C# nameof
- r - 替换为范围之间的随机数