如何使用 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/