我想找到所有实现 ASP.NET Core 的 IConfigureOptions<JsonOptions>
接口的类型。
以下是此类的示例:
public sealed class MyJsonOptions : IConfigureOptions<JsonOptions> {
public void Configure(JsonOptions options) { }
}
这没有发现:
AppDomain.CurrentDomain
.GetAssemblies()
.Where(assembly => !assembly.IsDynamic)
.SelectMany(assembly => assembly.ExportedTypes)
.Where(type => type.IsAssignableTo<IConfigureOptions<JsonOptions>>())
.ToArray();
我也试过这个:
AppDomain.CurrentDomain
.GetAssemblies()
.Where(assembly => !assembly.IsDynamic)
.SelectMany(assembly => assembly.ExportedTypes)
.Where(type => type
.GetInterfaces()
.Any(x =>
x.IsGenericType &&
x.GetGenericTypeDefinition() == typeof(IConfigureOptions<>)))
//&& x.GetGenericArguments()[0] == typeof(JsonOptions) // if included then nothing found
.ToArray();
这给了我实现 IConfigureOptions<>
的所有类型。但当然我也需要 typeparam JsonOptions.
我该怎么做?
答案 0 :(得分:1)
MyJsonsOptions 中的 JsonOptions 类型和您查询中的 JsonOptions 类型实际上可能不是同一类型,.NET 中至少有两个:
因此请务必在 .Where(type => type.IsAssignableTo<IConfigureOptions<JsonOptions>>())
中选择正确的 JsonOptions 类型。
(或者,只需按名称 x.GetGenericArguments()[0].Name == "JsonOptions"
进行比较)。