C#接口与类访问

时间:2009-10-20 19:37:11

标签: c# interface

当一个类实现一个接口时,通过类本身或通过其接口访问属性和方法是否更好?

2 个答案:

答案 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是最通用的类​​型(即方法签名中的原型参数),允许调用者提供他们拥有的任何东西(实际传递的参数)。