Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类型';projectname.Repositories.IRepository';找不到。它可能需要装配鉴定,例如;MyType,MyAssembly“;_C#_Asp.net Mvc_Dependency Injection_Autofac - Fatal编程技术网

C# 类型';projectname.Repositories.IRepository';找不到。它可能需要装配鉴定,例如;MyType,MyAssembly“;

C# 类型';projectname.Repositories.IRepository';找不到。它可能需要装配鉴定,例如;MyType,MyAssembly“;,c#,asp.net-mvc,dependency-injection,autofac,C#,Asp.net Mvc,Dependency Injection,Autofac,我是一家公司的实习生,我的任务是为他们提供一个可用的门户网站。因为我是个实习生,我的技能还没那么先进,所以他们雇了一个高级开发人员来和我们合作。他建立了我们的项目结构等。。。他告诉我们为DI与AutoFac合作,但我对此一点都不熟悉。这家伙现在正在度假,所以他真的帮不了我们 当使用Autofac时,我遇到了这个错误,我不知道如何修复它 无法指定类型“projectnamespace.Repositories.IRepository” 建立可能需要装配鉴定,例如“MyType, 我的大会”。 M

我是一家公司的实习生,我的任务是为他们提供一个可用的门户网站。因为我是个实习生,我的技能还没那么先进,所以他们雇了一个高级开发人员来和我们合作。他建立了我们的项目结构等。。。他告诉我们为DI与AutoFac合作,但我对此一点都不熟悉。这家伙现在正在度假,所以他真的帮不了我们

当使用Autofac时,我遇到了这个错误,我不知道如何修复它

无法指定类型“projectnamespace.Repositories.IRepository” 建立可能需要装配鉴定,例如“MyType, 我的大会”。

My 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


IRepository.cs

public interface IRepository
{
    string FetchAll();
}
public class OrderRepository : IRepository
{
    public string FetchAll()
    {
        return "return something";
    }
}
OrderRepository.cs

public interface IRepository
{
    string FetchAll();
}
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();
    }
任何帮助都将不胜感激

该错误意味着Autofac无法找到承载
IRepository
类型的程序集

要重新激活它,必须指定在autofac配置中查找类型的位置。您可以通过在
服务
属性上指定assemblyname来完成此操作。语法为namespace.typeName,assemblyName



在您的情况下,似乎assemblyName是projectName

谢谢,这修复了上面的错误。现在,我发现了一个新错误:在“projectnamespace.Controllers.HomeController”类型上,找不到任何使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”的构造函数,可以使用可用的服务和参数进行调用:错误堆栈中还有一些错误:无法解析的参数“projectnamespace.Repositories.OrderRepository”构造函数“Void.ctor(Go4Logistics.Tms.Portal.Web.Repositories.OrderRepository)”。您必须在Autofac中注册
OrderRepository
。我建议阅读一些介绍文章来理解依赖注入的关键概念,它将帮助您解决进一步的问题