相关疑难解决方法(0)

Unity 2.0:如何使用ResolverOverride解决?

我开始用Unity做越来越多的工作.我注意到解析方法需要一个PARAMS参数ResolverOverride.

有人可以给我一个例子,我可以如何使用ResolverOverride或指向我一些其他来源,我可以得到更多的线索.

.net unity2.0

65
推荐指数
3
解决办法
3万
查看次数

使用Unity的策略模式和依赖注入

我终于忍受了Dependency Injection(早就应该); 我开始玩Unity并遇到战略模式的问题.我可以使用容器向我返回基于名称的策略的特定实现,但我没有看到我应该如何在上下文中获得正确的策略.
让我们举一个简单的例子说明:上下文是一辆汽车,它有一个IEngine(策略),有2个实现,FastEngine和SlowEngine.代码将沿着这些方向看:

public interface IEngine
{
    double MaxSpeed
    {
        get;
    }
}

internal class FastEngine:IEngine
{
    public double MaxSpeed
    {
        get 
        { 
            return 100d; 
        }
    }
}

internal class SlowEngine:IEngine
{
    public double MaxSpeed
    {
        get
        {
            return 10d;
        }
    }
}

public class Car
{
    private IEngine engine;
    public double MaximumSpeed
    {
        get
        {
            return this.engine.MaxSpeed;
        }
    }

    public Car(IEngine engine)
    {
        this.engine = engine;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题如下:我应该如何实例化快车或慢车?我可以使用容器为我提供每个实现,我可以设置一个"默认"实现来使用:

IUnityContainer container = new UnityContainer();
container.RegisterType<IEngine, FastEngine>();
container.RegisterType<IEngine, FastEngine>("Fast"); …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection ioc-container unity-container strategy-pattern

24
推荐指数
1
解决办法
1万
查看次数

使用Unity使用额外参数创建对象

我正在使用Prism,它也是很好的Unity IoC容器.我是这个概念的新手,所以我还没有全力以赴.我现在要做的是使用IoC容器创建一个对象,但也传递一个额外的参数.请允许我用一个例子解释..:

我有一个接受命令对象的类.这是在IoC容器中注册的,因此它可以很好地处理它:

public class Person 
{
    public Person(IApplicationCommands commands) { .. }
    ..
}

Person person = _container.Resolve<Person>();
Run Code Online (Sandbox Code Playgroud)

现在 - 我想传递另一个论点 - 例如人的名字.但是,我仍然希望使用IoC容器来处理解析,从而从IoC容器中获取其他参数.但是将名称作为"自定义"参数传递.可以这样做吗?

public class Person 
{
    public Person(IApplicationCommands commands, string name) { .. }
    ..
}

string name = "John"; 
Person person = _container.Resolve<Person>(name); // ....?? 
Run Code Online (Sandbox Code Playgroud)

这个例子似乎不起作用,但有没有办法让它工作?或者Unity IoC容器是否要求在调用Resolve之前在容器中注册所有参数?

.net c# prism unity-container

13
推荐指数
2
解决办法
1万
查看次数

当需要多个相同类型的实例时,DI与Uni​​ty

我需要帮助.我使用Unity作为我的容器,我想在构造函数中注入两个相同类型的不同实例.

class Example
{
   Example(IQueue receiveQueue, IQueue sendQueue) {}
}
Run Code Online (Sandbox Code Playgroud)

....和IQueue在我的MessageQueue类中实现....

class MessageQueue : IQueue
{
    MessageQueue(string path) {}
}
Run Code Online (Sandbox Code Playgroud)

如何将两个不同的MessageQueue实例注入我的Example类?要使用不同的路径创建的每个MessageQueue实例.

c# dependency-injection unity-container

9
推荐指数
2
解决办法
6002
查看次数

Unity Framework - 将整数和字符串传递给已解析的对象

有没有办法使用Unity框架将整数作为参数传递给构造函数或已解析的对象?

伪码..

IService svc = Container.Resolve<ConcreteService>()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,混凝土服务将是这样的......

public class ConcreteService
{
    public ConcreteService(int val)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,我需要在xml配置中执行此操作,而不是在代码中执行此操作.

提前致谢.

c# inversion-of-control unity-container

3
推荐指数
1
解决办法
2648
查看次数

1
推荐指数
1
解决办法
9401
查看次数