相关疑难解决方法(0)

如何正确使用Unity将ConnectionString传递给我的存储库类?

我刚刚开始使用微软的Unity应用程序块依赖注入库,而且我已经失败了.

这是我的IoC类,它将处理我的具体类到它们的接口类型的实例化(所以每次我在控制器中需要一个存储库时,我不必在IoC容器上保持名为Resolve):

public class IoC
{
    public static void Intialise(UnityConfigurationSection section, string connectionString)
    {
        _connectionString = connectionString;
        _container = new UnityContainer();
        section.Configure(_container);
    }

    private static IUnityContainer _container;
    private static string _connectionString;

    public static IMovementRepository MovementRepository
    {
        get { return _container.Resolve<IMovementRepository>(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我的想法是,从我的控制器,我可以做到以下几点:

_repository = IoC.MovementRepository;
Run Code Online (Sandbox Code Playgroud)

我目前收到错误:

异常是:InvalidOperationException - 无法构造String类型.您必须配置容器以提供此值.

现在,我假设这是因为我的映射具体实现需要为其构造函数提供单个字符串参数.具体课程如下:

public sealed class MovementRepository : Repository, IMovementRepository
{
    public MovementRepository(string connectionString) : base(connectionString) { }
}
Run Code Online (Sandbox Code Playgroud)

其中继承自:

public abstract class Repository
{
    public Repository(string connectionString)
    {
        _connectionString = …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection inversion-of-control unity-container repository-pattern

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