我是一家公司的實習生,我的任務是爲他們提供一個工作的門戶網站。因爲我是一名實習生,所以我的技能還沒有那麼先進,所以他們聘請了一位將與我們合作的高級開發人員。他建立了我們的項目結構等等。他告訴我們與AutoFac合作開發DI,但我對此並不熟悉。這傢伙現在正在度假,所以他不能真正幫助我們。無法找到類型'projectname.Repositories.IRepository'。它可能需要組裝資格,例如「MyType,MyAssembly」
當使用Autofac我得到這個錯誤,我不知道如何解決它..
The type 'projectnamespace.Repositories.IRepository' could not be found. It may require assembly qualification, e.g. "MyType, MyAssembly".
我的Global.asax.cs
var builder = new ContainerBuilder();
//register types from configuration
builder.RegisterModule(new ConfigurationSettingsReader());
// Register your MVC controllers.
builder.RegisterControllers(Assembly.GetExecutingAssembly());
// Set the dependency resolver to be Autofac.
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
的Web.config
<autofac>
<components>
<component
type="projectnamespace.Repositories.OrderRepository, projectnamespace"
service="projectnamespace.Repositories.IRepository" />
</components>
</autofac>
IRepository.cs
public interface IRepository
{
string FetchAll();
}
個
OrderRepository.cs
public class OrderRepository : IRepository
{
public string FetchAll()
{
return "return something";
}
}
和最後但並非最不重要的HomeController
private readonly IRepository _repository;
public HomeController(OrderRepository repo)
{
_repository = repo;
}
[HttpGet]
public ActionResult Index()
{
ViewBag.Data = _repository.FetchAll();
return View();
}
任何幫助都將不勝感激。
由於這個固定的上述錯誤。現在我得到一個新的錯誤: 在'projectnamespace.Controllers.HomeController'類型的'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'中找到的構造函數都不能用可用的服務和參數調用: –
更多來自錯誤stack:無法解析構造函數'Void .ctor(Go4Logistics.Tms.Portal.Web.Repositories.OrderRepository)'的參數'projectnamespace.Repositories.OrderRepository repo''。 –
您必須在* Autofac *中註冊'OrderRepository'。我建議閱讀一些介紹文章來理解依賴注入的關鍵概念,它將幫助你解決進一步的問題 –