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();     
  }
}

「as」キャストなしでコンパイルするには、次のものを取得する必要があるようです。

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

要するに、私が何かを見逃していない限り、内部インターフェースを採用すると必然的にこの種の DRY 違反につながるということです。もう 1 つの方法は、Person クラスを public にすることです。

何か不足していますか?

4

1 に答える 1

0

この場合、実際には 2 つのメソッドは必要ありません。「IGetPerson」を取り出すだけです。(ポイントを含む)最初のオーバーライドから、次に2番目のメソッドを取り出します。VS 2015 のクイック アクションを使用している場合は、[インターフェイスを明示的に実装する] ではなく、[インターフェイスを実装する] を選択してみてください。

于 2016-07-07T07:24:40.313 に答える