Dependency injection 如何使用参数解析类型,以及在子依赖项中解析时如何使用此参数

Dependency injection 如何使用参数解析类型,以及在子依赖项中解析时如何使用此参数,dependency-injection,unity-container,Dependency Injection,Unity Container,在Unity中,是否可以解析带有参数的类型,然后在子依赖项中进一步注入此特定参数 例如 父级具有参数为Dummy的构造函数。 Parent解析其他几种类型,它们的构造函数中也有一个伪参数——我希望在其中注入特定的参数 可能吗?如果您在解析时提供参数,这是默认行为 在本例中,“dummyValue”被注入两个构造函数(MyImplementation和MySomething): 类程序 { 静态void Main(字符串[]参数) { var container=new UnityContaine

在Unity中,是否可以解析带有参数的类型,然后在子依赖项中进一步注入此特定参数

例如 父级具有参数为Dummy的构造函数。 Parent解析其他几种类型,它们的构造函数中也有一个伪参数——我希望在其中注入特定的参数


可能吗?

如果您在解析时提供参数,这是默认行为

在本例中,
“dummyValue”
被注入两个构造函数(
MyImplementation
MySomething
):

类程序
{
静态void Main(字符串[]参数)
{
var container=new UnityContainer();
container.RegisterType();
container.RegisterType();
var instance=container.Resolve(新参数覆盖(“dummy”、“dummyValue”);
}
}
内部类实现:IInterface
{
公共MyImplementation(ISomething dep,字符串虚拟)
{
}
}
内部类MySomething:ISomething
{
公共MySomething(字符串伪)
{
}
}
内部接口接口
{
}
内部接口等轴测
{
}

谢谢!现在来看,DependencyOverride是一个更好的选择吗?在哪方面更好?因为它覆盖了所有指定的类型,而不是那些与名称匹配的类型?而且,它似乎可以覆盖用dependency属性标记的依赖项。我知道我在constructur中明确声明了参数,但DependencyOverride似乎可以处理更多的场景(除非我有多个相同类型的实例)。你同意吗?我想这取决于你想达到什么目标。就个人而言,我不喜欢这些覆盖,更喜欢手工制作的工厂,因为它们(对我来说)更清晰、更不脆弱
class Program
{
    static void Main( string[] args )
    {
        var container = new UnityContainer();
        container.RegisterType<IInterface, MyImplementation>();
        container.RegisterType<ISomething, MySomething>();
        var instance = container.Resolve<MyImplementation>( new ParameterOverride( "dummy", "dummyValue" ) );
    }
}

internal class MyImplementation : IInterface
{
    public MyImplementation( ISomething dep, string dummy )
    {
    }
}

internal class MySomething : ISomething
{
    public MySomething( string dummy )
    {
    }
}

internal interface IInterface
{
}

internal interface ISomething
{
}