我正在使用 dotnet core 2.0 和 StructureMap.Microsoft.DependencyInjection用于 IoC 和依赖注入(inject)。我正在尝试创建一个用于验证的代理类。我试图暗示 IoC 的 DI 在使用 IComponentDataAccessor
时使用 ComponentDataAccessorProxy
并且还满足 ComponentDataAccessorProxy
依赖性,即 ComponentDataAccessor
并满足它的依赖性,即 IMongoDatabase
而不会陷入循环依赖性异常。我想知道是否有可能。任何帮助将不胜感激。
这是界面:
public interface IComponentDataAccessor
{
Component SaveComponent(Component componentToAdd);
}
这是具体定义或具体类型:
public class ComponentDataAccessor : IComponentDataAccessor
{
private readonly IMongoDatabase _database;
public ComponentDataAccessor(IMongoDatabase database)
{
_database = database;
}
public Component SaveComponent(Component componentToAdd)
{
// actually save the componentToAdd
}
}
最后这是一个代理类:
public class ComponentDataAccessorProxy : IComponentDataAccessor
{
private readonly IComponentDataAccessor _componentDataAccessor;
public ComponentDataAccessorProxy(IComponentDataAccessor componentDataAccessor)
{
_componentDataAccessor = componentDataAccessor;
}
public Component SaveComponent(Component componentToAdd)
{
// do some validation here, if everything is good then call
// concrete class otherwise throw an exception
return _componentDataAccessor.SaveComponent(componentToAdd);
}
}
失败的尝试:
var container = new Container();
container.Configure(config =>
{
// failed attempt #1
config.Forward<IComponentDataAccessor, ComponentDataAccessorProxy>();
// failed attempt #2
config.For<IComponentDataAccessor>().Use<ComponentDataAccessorProxy>();
});
最佳答案
根据文档here ,你应该使用这样的东西:
config.For<IComponentDataAccessor>().DecorateAllWith<ComponentDataAccessorProxy>();
config.For<IComponentDataAccessor>().Use<ComponentDataAccessor>();
关于c# - 使用 StructureMap.DependencyInjection 在 C# dotnet core 2.0 中简单代理类依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48132744/