c# - 使用 Unity 依赖注入(inject)注册 UrlHelper

标签 c# asp.net-mvc dependency-injection unity-container

如何使用 Unity(依赖注入(inject))注册 UrlHelper。我们需要该对象来构建域对象中的动态路径。

最佳答案

包装 UrlHelper 并使用所需的方法编写您的界面。

然后注册一个工厂类:

container.RegisterType<IUrlFactory, UrlFactory>();

界面:

public interface IUrlFactory
{
    IUrlWrapper Create();
}

然后在实现中你可以做:

class UrlFactory : IUrlFactory
{
    public IUrlWrapper Create()
    {
        var context = new HttpContextWrapper(HttpContext.Current);
        var routeData = RouteTable.Routes.GetRouteData(context);
        return new UrlWrapper(new UrlHelper(new RequestContext(context, routeData)));
    }
}

当您想编写一个测试来模拟 url 时,您可以这样做(使用最小起订量):

var urlMock = new Mock<IUrlWrapper>();
urlMock.Setup(x => x.GetSubDomain()).Returns(string.Empty);

var urlFactoryMock = new Mock<IUrlFactory>();
urlFactoryMock.Setup(x => x.Create()).Returns(_urlMock.Object);

关于c# - 使用 Unity 依赖注入(inject)注册 UrlHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7974690/

相关文章:

c# - 在 web api 中启用 CORS 时 "*"中允许哪些 http 方法

c# - 如何最有效地在 C 和 C#(Mono 和 Silverlight)之间共享代码

C# Mono 软调试器

c# - DDD/DI (Unity)/.NET/Composition Root - 领域服务

c# - 库中控制反转的最佳实践?

c# - Silverlight 可选字段验证

c# - JsonResult 有时会被截断

asp.net - Compass/Sass、ASP.NET/MVC 蓝图

json - 通过装饰覆盖一个特定枚举的全局 Json.NET 枚举处理

c# - 聚合根应该有依赖关系吗?