2016-07-07 59 views
0

我有以下幾點:內部接口通入乾燥違反

internal class Person { 
} 

internal interface IGetPerson { 
    Person GetPerson(); 
} 

public class Cat: IGetPerson { 
    private Person _Person = new Person(); 

    Person IGetPerson.GetPerson() { 
    return _Person; 
    } 

    internal Person GetPerson() { // dry violation -- necessary? 
    return _Person; // or return (this as IGetPerson).GetPerson();  
    } 
} 

這似乎是必要得到以下編譯,沒有「爲」鑄:

internal class SomeClass { 
    public static Person GetPerson(Cat someCat) { 
    return someCat.GetPerson(); 
    } 
} 

的結果是除非我錯過了某些東西,否則採用內部接口將不可避免地導致這種干擾。另一種方法是公開Person類。

我錯過了什麼嗎?

+0

爲什麼修復不能「使用'作爲'cast」? –

+0

取決於用例,它可能是。它只是覺得愚蠢。 –

回答

0

在這種情況下,您實際上並不需要兩種方法。只要拿出「IGetPerson」。 (包括點)從第一個覆蓋,然後拿出第二個方法。 如果您使用VS 2015的快速操作,請嘗試選擇「實現接口」而不是「顯式實現接口」。

+0

不會建立。問題在於GetPerson必須公開才能實現接口,但不能公開,因爲Person不是公共的。 –

+0

我明白了。你可以讓接口成爲一個靜態類,所以它可以有內部成員,公開「人員」,讓貓內部,或按照你的建議做。在這種情況下,幹違規並不重要,因爲它只是一個簡單的行,我不會擔心太多。 – mousetail