内部接口会导致 DRY 违规

本文关键字:DRY 违规 接口 内部 | 更新日期: 2023-09-27 17:55:27

>我有以下内容:

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 类设为公共。

我错过了什么吗?

内部接口会导致 DRY 违规

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