当一个类实现一个接口时,通过类本身或通过其接口访问属性和方法是否更好?
答案 0 :(得分:9)
接口,它将解耦类,以便您以后测试它。如果您以后不需要测试它,或者不可能传入从同一接口继承的其他类,则使用类方法是完全正常的。特别是在像System.Collections.Generic.List这样的基类的情况下。每次你想对它进行LINQ查询时,你都不想先将它强制转换为IEnumerable。
答案 1 :(得分:3)
我认为这一切都取决于你对你所扮演的对象的了解。 假设
public class Bar : ICommon
public class Baz : ICommon
如果我有Baz myBaz,那么在采取行动之前无需将其投射到ICommon。
尽可能在最高级别的抽象中工作。它使重构更容易,并且显着改善了代码的重用。
Bar myBar = new Bar();
Baz myBaz = new Baz();
doSomething(myBar);
doSomething(myBaz);
public void doSomething(ICommon parameter)
{
parameter.DoICommonThing(); // working on object reference of type ICommon.
}
换句话说,ASK是最通用的类型(即方法签名中的原型参数),允许调用者提供他们拥有的任何东西(实际传递的参数)。