Aru*_*ngh 3 asp.net-mvc autofac odata asp.net-web-api
我有这样的界面:
public interface ICategoryFacade
{
IEnumerable<Category> Get();
Category Get(int id);
int Post(Category model);
int Put(Category model);
int Patch(Category model);
int Delete(int id);
}
Run Code Online (Sandbox Code Playgroud)
我上课了:
public class CategoryFacade : ICategoryFacade
{
MyContext _dbContext = new MyContext ();
public IEnumerable<Category> Get()
{
return _dbContext.Categories;
}
public Category Get(int id)
{
return _dbContext.Categories.FirstOrDefault(m => m.CategoryID == id);
}
public int Post(Category model)
{
return 0;
}
public int Put(Category model)
{
return 0;
}
public int Patch(Category model)
{
return 0;
}
public int Delete(int id)
{
return 0;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将IOC与我的ODATA控制器一起使用.所以为了做到这一点,我在Global.asax文件中使用以下代码行(Application_Start事件):
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterInstance(new CategoryFacade()).As<ICategoryFacade>();
builder.RegisterInstance(new TVideoFacade()).As<ITVideoFacade>();
builder.RegisterType<CategoryController>();
//builder.RegisterType<CategoryFacade>().As<ICategoryFacade>();
//builder.RegisterType<TVideoFacade>().As<ITVideoFacade>();
//builder.Register(c => new CategoryFacade()).As<ICategoryFacade>().InstancePerRequest();
//builder.Register(c => new TVideoFacade()).As<ITVideoFacade>().InstancePerRequest();
var container = builder.Build();
var resolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
Run Code Online (Sandbox Code Playgroud)
但它显示以下异常:
Additional information: The type 'ABC.ABCDatabase.Facades.TVideoFacade' is not assignable to service 'ABC.ABCDatabase.Abstractions.ICategoryFacade'.
Run Code Online (Sandbox Code Playgroud)
你能告诉我在OData控制器上使用autofac的正确方法吗?我是autofac的新手.
| 归档时间: |
|
| 查看次数: |
7633 次 |
| 最近记录: |