gpt4 book ai didi

C# 依赖项注入(inject) - 如何在没有源代码的情况下注入(inject)依赖项?

转载 作者:太空狗 更新时间:2023-10-29 23:04:04 25 4
gpt4 key购买 nike

我正尝试开始使用 C# 进行一些简单的依赖项注入(inject),但我遇到了一个我似乎无法找到答案的问题。

我有一个由另一个部门编写的类,我的项目中没有该类的源代码。我想通过使用接口(interface)的构造函数注入(inject)这种类型的对象,但是当然,当将对象转换为接口(interface)类型时,我不能更改注入(inject)的对象实现来实现接口(interface)以实现多态性。

我所见过的关于此技术的每个学术示例都使用了在项目本身中声明的类。如果源代码在项目中不可用,我将如何注入(inject)我的依赖项?

我希望这是有道理的,谢谢。

最佳答案

您可以围绕您的目标类型创建一个包装器,例如,您可以拥有一个它们提供的类:

public class TheirClass
{
public void DoSomething();
}

你可以定义一个接口(interface):

public interface ITheirClass
{
void DoSomething();
}

并在包装器类上实现该接口(interface):

public class TheirClassWrapper : TheirClass, ITheirClass
{

}

或者,如果他们提供的类是密封的,您需要稍微改变一下:

public class TheirClassWrapper : ITheirClass
{
private TheirClass instance = new TheirClass();

public void DoSomething()
{
instance.DoSomething();
}
}

然后您可以注入(inject)该接口(interface)。

我知道在 MEF 中我们可以导出具体类型并正确注入(inject)它们,但我不确定其他 IoC 容器。

关于C# 依赖项注入(inject) - 如何在没有源代码的情况下注入(inject)依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3059548/

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