gpt4 book ai didi

c# - Autofac - 在运行时解析 IEnumerable 通用接口(interface)

转载 作者:行者123 更新时间:2023-11-30 15:07:06 27 4
gpt4 key购买 nike

我发现了如何使用以下代码在运行时解析通用接口(interface)。我将如何解决 IGenericInterface<> 的所有实例?在运行时取回集合。我知道在 autofac 中我们应该使用 IEnumerable<T>但我不知道如何在下面的示例中表示:

 var typeInRuntime = typeof (SubClass1);
var instance1 = container.Resolve(typeof(IGenericInterface<>)
.MakeGenericType(typeInRuntime));

这显然行不通

 var typeInRuntime = typeof (SubClass1);
var collection = container
.Resolve(IEnumerable<typeof(IGenericInterface<>)
.MakeGenericType(typeInRuntime)>);

最佳答案

您必须分两步构建通用 IEnumerable 类型。以下代码适用于我的机器 ;)

var t1 = typeof (IGenericInterface<>).MakeGenericType(typeof(SubClass1));
var t2 = typeof(IEnumerable<>).MakeGenericType(t1);
var collection = c.Resolve(t2);

Assert.That(collection, Is.InstanceOf<IEnumerable<IGenericInterface<SubClass1>>>());

关于c# - Autofac - 在运行时解析 IEnumerable 通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6929748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com