Dependeny注射和部分类

时间:2016-06-27 16:44:23

标签: c# dependency-injection

我有一个由代码生成器生成的部分类

public partial class PersonRepository: IPersonRepository
{
    public string Method1(){...}
    public string Method2(){...}
    //...
}

我想扩展这个类,并能够使用依赖注入

我试过这种方式

public interface IPersonRepositoryExtended : IPersonRepository
{
    public string Method3(){...}
}

public class PersonRepositoryExtended: PersonRepository, IPersonRepositoryExtended
{
    public string Method3(){...}
    //...
}

然后对于DI我将IPersonRepositoryExtended映射到PersonRepositoryExtended,有更好的方法吗?

我应该创建PersonRepository的部分类,如果我这样做,接口映射如何工作?

1 个答案:

答案 0 :(得分:2)

你快到了那里:

像您计划的那样创建扩展界面

public interface IPersonRepositoryExtended : IPersonRepository
{
    string Method3();
}

然后继续PersonRepository部分课程。不需要像以前那样扩展课程。

public partial class PersonRepository: IPersonRepositoryExtended
{
    public string Method3(){...}
}
然后,您将在需要时注入扩展接口。

public class SomeClass {
    public SomeClass(IPersonRepositoryExtended dependency) { ... }
}

映射位于IPersonRepositoryExtendedPersonRepository之间。

请记住,部分类需要属于同一个项目。