2012-12-12 27 views
6

可以說我有一個這樣的接口:是否有可能強制顯式實現接口(或其部分)?

public interface MyInterface 
{ 
    int Property1 
    { 
     get; 
    } 

    void Method1(); 
    void Method2(); 
} 

有沒有什麼辦法來強制接口的實現者顯式實現它的部分?例如:

public interface MyInterface 
{ 
    int Property1 
    { 
     get; 
    } 

    explicit void Method1(); 
    explicit void Method2(); 
} 

編輯:至於我爲什麼關心接口是否明確實現;就功能而言並不重要,但可以隱藏使用代碼的人員的一些不必要的細節。

我試圖模仿多重繼承在我的系統,使用這種模式:

public interface IMovable 
{ 
    MovableComponent MovableComponent 
    { 
     get; 
    } 
} 

public struct MovableComponent 
{ 
    private Vector2 position; 
    private Vector2 velocity; 
    private Vector2 acceleration; 

    public int Method1() 
    { 
     // Implementation 
    } 

    public int Method2() 
    { 
     // Implementation 
    } 

} 

public static IMovableExtensions 
{ 
    public static void Method1(this IMovable movableObject) 
    { 
     movableObject.MovableComponent.Method1(); 
    } 

    public static void Method2(this IMovable movableObject) 
    { 
     movableObject.MovableComponent.Method2(); 
    } 
} 

public class MovableObject : IMovable 
{ 
    private readonly MovableComponent movableComponent = new MovableComponent(); 

    public MovableComponent MovableComponent 
    { 
     get { return movableComponent; } // Preferably hiddem, all it's methods are available through extension methods. 
    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
      MovableObject movableObject = new MovableObject(); 
      movableObject.Method1(); // Extension method 
      movableObject.Method2(); // Extension method 
      movableObject.MovableComponent // Should preferably be hidden. 

    } 
} 

如果MovableComponent財產被明確地實施,這將在大多數情況下,從誰用的是類隱。希望這個解釋不太可怕。

+0

您是否在尋找[虛擬](http://msdn.microsoft.com/en-us/library/aa645767(V = vs.71)。 ASPX)?這應該允許你在這裏聲明一個明確的方法。 – Codeman

+1

您無法實現接口的某些部分。這是全部或沒有。 – rae1

+1

爲什麼你關心它是明確還是隱含地實現? – Jacob

回答

8

不,不可能強制實施者選擇接口的顯式或隱式實現。

0

你所尋找被稱爲抽象類

+0

這不回答我的問題。 –

+0

不,他不是在找什麼。有一個原因是爲什麼你想使用接口來封裝功能,而不是將功能保險限制在基類派生。 – Dbl

相關問題