Nav*_*een 17 structuremap dependency-injection c#-4.0 asp.net-mvc-4 asp.net-mvc-5
我低于错误.我设置它类似于asp.net mvc 4.
没有为此对象定义的无参数构造函数.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.MissingMethodException:没有为此对象定义的无参数构造函数.
终于找到了实际异常"尝试获取HomeController类型的实例时出现激活错误,密钥"""
当我要将服务类注入到家庭控制器时出现错误
Dar*_*rov 40
以下步骤对我有用:
安装StructureMap.MVC4NuGet:
Install-Package StructureMap.MVC4
Run Code Online (Sandbox Code Playgroud)创建一个新界面:
public interface IDependency
{
string SayHello();
}
Run Code Online (Sandbox Code Playgroud)实现此接口:
public class ConcreteDepenedency: IDependency
{
public string SayHello()
{
return "Hello World";
}
}
Run Code Online (Sandbox Code Playgroud)让HomeController使用此界面:
public class HomeController : Controller
{
private readonly IDependency dependency;
public HomeController(IDependency dependency)
{
this.dependency = dependency;
}
public ActionResult Index()
{
return Content(this.dependency.SayHello());
}
}
Run Code Online (Sandbox Code Playgroud)在~/DependencyResolution/Ioc.cs以下位置配置容器:
using StructureMap;
using WebApplication1.Controllers;
namespace WebApplication1.DependencyResolution {
public static class IoC {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
x.For<IDependency>().Use<ConcreteDepenedency>();
});
return ObjectFactory.Container;
}
}
}
Run Code Online (Sandbox Code Playgroud)运行您的应用程序 Ctrl+F5
ConcreteDependency成功的注入HomeController.ssm*_*ith 10
我有一个详细的演练,展示如何使用最新的StructureMap for MVC 5软件包在这里工作:http: //ardalis.com/resolving-dependencies-in-asp.net-mvc-5-with-structuremap
它与我之前发布的ASP.NET MVC 3中所必需的完全不同:http: //ardalis.com/How-Do-I-Use-StructureMap-with-ASP.NET-MVC-3
基本上,您只需安装正确的NuGet包,修改控制器以接受依赖关系,并将接口连接到IoC.cs中的实现.如果遵循StructureMap的默认约定,则可以为多种类型自动进行此连接.
Nav*_*een -4
谢谢大家的回复终于找到问题了。在我的服务类中,我引用了一个应用程序设置,但没有在 web.config 文件中定义它,因为该结构图无法注入我的服务类的实例。
private readonly string _path =
ConfigurationManager.AppSettings["vp"].ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26295 次 |
| 最近记录: |