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 违规。另一种方法是公开 Person 类。

我错过了什么吗?

4

1 回答 1

0

在这种情况下,您实际上并不需要两种方法。只需取出“IGetPerson”即可。(包括点)从第一个覆盖,然后取出第二个方法。如果您使用 VS 2015 的快速操作,请尝试选择“实现接口”而不是“显式实现接口”。

于 2016-07-07T07:24:40.313 回答