2012-08-07 39 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