gpt4 book ai didi

c# - 为多个接口(interface)返回相同的实例

转载 作者:IT王子 更新时间:2023-10-29 04:08:55 26 4
gpt4 key购买 nike

我正在使用以下代码注册组件:

StandardKernel kernel = new StandardKernel();

string currentDirectory = Path.GetDirectoryName(GetType().Assembly.Location)
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
if (!Path.GetDirectoryName(assembly.Location).Equals(currentDirectory))
continue;

foreach (var type in assembly.GetTypes())
{
if (!type.IsComponent())
continue;

foreach (var @interface in type.GetInterfaces())
kernel.Bind(@interface).To(type).InSingletonScope();
}
}

然后我有一个实现两个接口(interface)的类:

class StandardConsole : IStartable, IConsumer<ConsoleCommand>

如果我解析 IStartable如果我解析 IConsumer<ConsoleCommand>,我会得到一个实例我得到另一个。

如何为两个接口(interface)获取相同的实例?

最佳答案

builder.RegisterType<StandardConsole>()
.As<IStartable>()
.As<IConsumer<ConsoleCommand>>()
.SingleInstance();

Autofac 非常广泛使用的功能 - 任何问题都会在某处出现错误:)

Hth尼克

编辑 从外观上看,您是在采用 IEnumerable () 的 As() 重载之后 - 使用 IntelliSense 检查所有 As() 重载,一些东西应该适合您的情况。正如另一位评论者指出的那样,您需要使用所有信息更新问题。

关于c# - 为多个接口(interface)返回相同的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3197439/

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