在依赖注入方面显式实现接口有没有好处?依赖注入和显式接口实现
据我了解,接口可以明确或隐含实现:
interface IFoo
{
void Bar();
}
//implicit implementation
class Foo1 : IFoo
{
public void Bar(){}
}
//explicit implementation
class Foo2 : IFoo
{
void IFoo.Bar(){}
}
现在明确的实现只能通过调用接口方法,而隐含的实现可以直接在被称为被称为类的实例:
class Baz
{
void Ba()
{
Foo1 foo1 = new Foo1();
foo1.Bar();
Foo2 foo2 = new Foo2();
foo2.Bar(); //syntax error
IFoo foo2_explicit = new Foo2();
foo2_explicit.Bar();
}
}
因此,使用显式接口实现中,一个不能意外调用一个具体类的方法,但人们必须调用接口方法。这是否会阻止紧密耦合的代码作为DI的一个目的,还是我在这里咆哮错误的树?毕竟,一个人不能意外编写得到注入,而不是一个接口的具体类的构造函数或方法:
class Baz
{
void Ba(Foo2 foo)
{
foo.Bar(); //syntax error
}
void Bb(IFoo foo)
{
foo.Bar();
}
}
您可以更新代码以使用IFoo而不是Foo吗?这在我看来是令人困惑... – 2015-07-28 11:22:49
完成 - 对不起,通常我尊重代码约定... – Thaoden