我有以下类实现第三方接口:
public class RegistrationService : IRegistrationService
{
public void Register()
{
....
}
}
由于这个类负责应用程序初始化的某些部分,所以在构造时没有一些必需的类依赖项,所以我不能像通常在IoC之后那样在构造函数中传递它们。
我无法修改Register方法,因为这意味着要更改第三方接口。
如果我在Register方法中创建我需要的依赖项,如:
{
IRequiredService requiredService;
public void Register()
{
this.requiredService = new RequiredService();
}
}
然后我无法模拟ClassT的ClassService。我正在使用Unity,我在课堂上有容器,但我不知道它对我有什么帮助。
任何帮助都将非常感激。
答案 0 :(得分:3)
您可以将构造函数传递给工厂委托,您可以在需要时使用它来创建RequiredService
。
类似的东西:
private readonly Func<IRequiredService> serviceCreator;
public RegistrationService(Func<IRequiredService> serviceCreator)
{
this.serviceCreator = serviceCreator;
...
然后在Register()
:
public void Register()
{
this.requiredService = serviceCreator();
}
答案 1 :(得分:1)
您可以使用属性注入吗?
public class RegistrationService : IRegistrationService
{
[Dependency]
public IRequiredService RequiredService { get; set; };
public void Register()
{}
}
认为我更喜欢马修的方法!
干杯