内部接口会导致 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 类设为公共。
我错过了什么吗?
在这种情况下,您实际上不需要两种方法。只要拿出"IGetPerson"。(包括点)从第一个覆盖,然后取出第二个方法。如果您使用的是VS 2015的快速操作,请尝试选择"实现接口"而不是"显式实现接口"。