2012-08-07 59 views

回答

5

这是通过Explicit Interface Implementation完成的。

假设你有一个接口,就像这样:

public interface IFoo 
{ 
    void Foo(); 
} 

可以正常实现这一点:或者

public class Bar : IFoo 
{ 
    public void Foo() {} // Implicit interface implementation 
} 

,您可以实现该接口构件明确,这就要求演员:

public class Baz : IFoo 
{ 
    void IFoo.Foo() {} // This will require casting the object to IFoo to call 
} 

Th有时可能会非常有用。例如,在例如首选API将要调用.Close()的类中经常实现IDisposable。通过明确地实现IDisposable,您可以“隐藏”Dispose()方法,但仍允许通过using语句使用类实例。

+0

感谢,里德和丹!第一个职位获胜。 – 2012-08-07 23:10:55

2

Channel类明确实现了ICommunicationObject接口。这里有一个例子演示显式接口实现和隐式接口的实现之间的区别:

internal interface IExample 
{ 
    void DoSomething(); 
} 

class ImplicitExample : IExample 
{ 
    public void DoSomething() 
    { 
     // ... 
    } 
} 

class ExplicitExample : IExample 
{ 
    void IExample.DoSomething() 
    { 
     // ... 
    } 
} 

class Consumer 
{ 
    void Demo() 
    { 
     var explicitExample = new ExplicitExample(); 
     // explicitExample.DoSomething(); <-- won't compile 
     ((IExample)explicitExample).DoSomething(); // <-- compiles 

     var implicitExample = new ImplicitExample(); 
     implicitExample.DoSomething(); // <-- compiles 
    } 
} 

这里是对的MSDN文章的链接就这个问题:http://msdn.microsoft.com/en-us/library/ms173157.aspx