Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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# 使用分部类解析Unity容器_C#_Dependency Injection_Unity Container - Fatal编程技术网

C# 使用分部类解析Unity容器

C# 使用分部类解析Unity容器,c#,dependency-injection,unity-container,C#,Dependency Injection,Unity Container,当我使用Unity向两个分部类注入依赖项时,我面临一个问题。这就是我所做的: public partial class MyDbContext : IMyDbContext { // code } public partial class MyDbContext : IMyDbContext { // code } public interface IMyDbContext { // code } var container = new UnityContaine

当我使用Unity向两个分部类注入依赖项时,我面临一个问题。这就是我所做的:

public partial class MyDbContext : IMyDbContext
{
    // code
}

public partial class MyDbContext : IMyDbContext
{
     // code
}

public interface IMyDbContext
{
    // code
}

var container = new UnityContainer();
container.RegisterType<IMyDbContext,      
MyDbContext>(new HierarchicalLifetimeManager());
config.DependencyResolver = new UnityResolver(container);
公共部分类MyDbContext:IMyDbContext
{
//代码
}
公共部分类MyDbContext:IMyDbContext
{
//代码
}
公共接口IMyDbContext
{
//代码
}
var container=new UnityContainer();
RegisterType(新的层次结构CallifetimeManager());
config.DependencyResolver=新的UnityResolver(容器);
使用上面的代码,我得到一个关于我的db为null的异常。但是,如果我删除一个分部类,那么我将只有一个分部类,所有的工作都很好。如果你能告诉我这件事,我将非常感激

编辑:
当我处于调试模式时,单元容器GetService方法捕获异常ResolutionFailedException

删除其中一个接口。其中一个分部类实现了它,所以另一个不能。请记住,分部类是在单个类中一起编译的,因此您不能让两个分部实现同一个接口,因为一旦组合起来,就不知道是哪个分部真正实现了它。

我通过注册实例而不是类型解决了这个问题。 但是,欢迎任何其他解决方案

var container = new UnityContainer();
MyDbContext context = new MyDbContext()
container.RegisterInstance<IMyDbContext>(context);
config.DependencyResolver = new UnityResolver(container);
var container=newunitycontainer();
MyDbContext=新的MyDbContext()
容器.RegisterInstance(上下文);
config.DependencyResolver=新的UnityResolver(容器);

感谢您的回复。如果您想从一个分部类中删除接口,我已经尝试过了,但仍然不起作用。